Skip to content

ReleaseSteps

zzzeek edited this page Mar 10, 2015 · 11 revisions

ReleaseSteps

Assume version X.Y.Z

  1. website prep
    1. cd to sqlalchemyorg tree
    2. create site/_posts/NNN. sqla X.Y.Z released.rst; git add
    3. version status etc. is now dynamic, so need to release to pypi first.
  2. startup
    1. git clone -b rel_X_Y from dev/sqlalchemy to tmp/saXYZ
    2. cd tmp/saXYZ
  3. version number
    1. version number in lib/sqlalchemy/__init__.py -> __version__
    2. version number in doc/build/conf.py -> release
    3. release date in doc/build/conf.py -> release_date
    4. version number in doc/build/changelog/changelog_XX.rst
    5. release date in doc/build/changelog/changelog_XX.rst
  4. check new major version (these should be totally done long before a release)
    1. major version in: docs/build/intro.rst, docs/build/core/tutorial.rst, docs/build/orm/tutorial.rst
    2. ensure correct "upgrading from P to Q" in docs/build/intro.rst
  5. new year / other (should be done long before a release)
    1. Current year in copyright message in all files
    2. Current year in LICENSE
    3. Ensure AUTHORS up to date
  6. tagged tree prep
    1. git commit -a
    2. edit setup.cfg, remove tag_build=dev
    3. cd doc/build; make dist-html
  7. test source build
    1. cd tmp/saXYZ
    2. python setup.py sdist
    3. cd ..; tar -zxf saXYZ/dist/SQLAlchemy-X.Y.Z.tar.gz
    4. Browse docs at tmp/SQLAlchemy-X.Y.Z/doc/index.html
    5. python setup.py test - make sure the full blown setuptools test works
  8. create tag
    1. cd tmp/saXYZ
    2. git tag rel_X_Y_Z
  9. prod release - send to pypi
    1. cd tmp/saXYZ
    2. python setup.py register
    3. python setup.py sdist upload
  10. prepare tag/changelog for push
    1. cd /path/to/master
    2. git checkout rel_X_Y
    3. git pull tmp/saXYZ
    4. git fetch --tags tmp/saXYZ
    5. git checkout master
    6. git show rel_X_Y doc/build/changelog/changelog_XX.rst | patch -p1
    7. git commit -a
    8. git mergeto
    9. git push --all
    10. git push --tags
  11. publish website
    1. blogodev
    2. test at http://localhost:8080 - check download.html, sidebar on all pages, CHANGES, "What's New?" links, blog posts
    3. git commit -a
    4. cd into sqlalchemyorg tree; git push ln2; git push
    5. check sqlalchemy.org
    6. check docs.sqlalchemy.org, readthedocs should have the new version
  12. update docs
    1. go to readthedocs/sqlalchemy, do a doc build for rel_0_X
  13. Roadmap
    1. Ensure a milestone for the next version, i.e. X.Y.Z+1, is present.
    2. Navigate to the X.Y.Z milestone - close it. Move all remaining tickets to the X.Y.Z+1 milestone.
  14. additional announcements
    1. email to [email protected]; [email protected]; "SQLAlchemy X.Y.Z Released". Comments, paste CHANGES for that release only at bottom of email, include download link

Clone this wiki locally