github.com/mgood/deis@v1.0.2-0.20141120022609-9a185b756e7d/docs/contributing/releases.rst (about) 1 :title: Releases 2 :description: The Deis software release process. 3 4 .. _releases: 5 6 Release Checklist 7 ================= 8 9 These instructions are to assist the Deis maintainers with creating a new Deis 10 product release. Please keep this document up-to-date with any changes in this process. 11 12 deis repo 13 --------- 14 - If this release was managed as a milestone in GitHub: 15 * Create the next `deis milestone`_ 16 * Move any `deis open issues`_ from the current release to the next milestone 17 * Close the current `deis milestone`_ 18 - Create a branch for the release PR: ``git checkout -b release-X.Y.Z`` 19 - Update CHANGELOG.md using the `changelog script`_ 20 * ``./contrib/util/generate-changelog.sh vU.V.W | cat - CHANGELOG.md > tmp && mv tmp CHANGELOG.md`` 21 substituting the previous release for vU.V.W. 22 * proofread the new CHANGELOG.md to ensure it was generated correctly and edit ``HEAD`` at the top 23 to vX.Y.Z (the current release) 24 - Update version strings with the ``bumpver`` tool: 25 26 .. code-block:: console 27 28 $ ./contrib/bumpver/bumpver X.Y.Z \ 29 version/version.go \ 30 README.md \ 31 client/deis.py \ 32 client/setup.py \ 33 contrib/coreos/user-data.example \ 34 controller/deis/__init__.py \ 35 deisctl/deis-version \ 36 deisctl/deisctl.go \ 37 docs/contributing/test_plan.rst \ 38 docs/installing_deis/install-deisctl.rst \ 39 docs/installing_deis/install-platform.rst \ 40 docs/managing_deis/upgrading-deis.rst 41 42 - Edit deisctl/cmd/cmd.go and change the default in the RefreshUnits usage string 43 (near the bottom of the file) from ``[master]`` to ``[vX.Y.Z]``. 44 - Examine the output of ``git grep vU.V.W`` to ensure that no old version strings 45 were missed 46 - Commit and push the deis/deis release and tag 47 * ``git commit -a -m 'chore(release): update version to vX.Y.Z'`` 48 * ``git push origin release-X.Y.Z`` 49 - When the PR is approved and merged, tag it in master 50 * ``git checkout master && git pull`` 51 * ``git tag vX.Y.Z`` 52 * ``git push --tags origin vX.Y.Z`` 53 - Trigger all deis-cli and deisctl builder jobs at ci.deis.io. When they finish, verify that 54 the current binary installers are publicly downloadable from the opdemand S3 bucket. 55 - Trigger the test-master job, supplying vX.Y.Z as the version 56 - When test-master completes, double-check images at Docker Hub to verify tags are published 57 - Publish CLI to pypi.python.org 58 - ``cd client && python setup.py sdist upload`` 59 - use testpypi.python.org first to ensure there aren't any problems 60 61 deis.io repo 62 ------------ 63 - Update deis.io installer scripts to point to new versions by default 64 * update https://github.com/deis/deis.io/blob/gh-pages/deis-cli/install.sh 65 * update https://github.com/deis/deis.io/blob/gh-pages/deisctl/install.sh 66 67 Documentation 68 ------------- 69 - (CHANGELOG.md files were regenerated and committed above.) 70 - Docs are automatically published to http://docs.deis.io (the preferred alias 71 for deis.readthedocs.org) 72 - Log in to the http://deis.readthedocs.org admin 73 * add the current release to the list of published builds 74 * remove the oldest release from the list of published builds 75 * rebuild all published versions so their "Versions" index links 76 are updated 77 - Publish docs to pythonhosted.org/deis 78 * from the project root, run ``make -C docs clean zipfile`` 79 * the zipfile will be at **docs/docs.zip** 80 * log in to http://pypi.python.org/ and use the web form at the 81 `Deis Pypi`_ page to upload the zipfile 82 - Check documentation for deis/* projects at the `Docker Hub`_ 83 * click "Settings" for each project (deis/controller, deis/cache, etc.) 84 * paste the contents of each README.md into the "long description" field if 85 there are discrepencies 86 - For a milestone release, create release notes docs 87 * follow the format of previous `release notes`_ 88 * summarize all work done since the previous release 89 * visit all deis/* project issues to make sure we don't 90 miss any contributors for the "Community Shout-Outs" section 91 * include "what's next" and "future directions" sections 92 * add Markdown version of release notes to `deis/deis.io`_ website project 93 - For a patch release, paste the new CHANGELOG.md section as GitHub release notes 94 95 Post-Release 96 ------------ 97 - Update the #deis IRC channel topic to reference the newly released version 98 - For a milestone release, update HipChat channel topics to reference the 99 next planned version 100 - Create a branch for the post-release PR: ``git checkout -b release-X.Y.Z+git`` 101 - Update version strings to vX.Y.Z+git with the ``bumpver`` tool: 102 103 .. code-block:: console 104 105 $ ./contrib/bumpver/bumpver X.Y.Z+git \ 106 version/version.go \ 107 client/deis.py \ 108 deisctl/deis-version \ 109 deisctl/deisctl.go \ 110 controller/deis/__init__.py \ 111 README.md 112 113 - Edit deisctl/cmd/cmd.go and change the default in the RefreshUnits usage string 114 (near the bottom of the file) from ``[vX.Y.Z]`` to ``[master]``. 115 - Create a pull request for vX.Y.Z+git 116 * ``git commit -a -m 'chore(release): update version in master to vX.Y.Z+git'`` 117 - Ensure that this PR is merged before others are allowed to be merged! 118 119 120 .. _`deis milestone`: https://github.com/deis/deis/issues/milestones 121 .. _`deis open issues`: https://github.com/deis/deis/issues?state=open 122 .. _`changelog script`: https://github.com/deis/deis/blob/master/contrib/util/generate-changelog.sh 123 .. _`release notes`: https://github.com/deis/deis/releases 124 .. _`aws-eng S3 bucket`: https://s3-us-west-2.amazonaws.com/opdemand/ 125 .. _`Deis Pypi`: https://pypi.python.org/pypi/deis/ 126 .. _`Docker Hub`: https://hub.docker.com/ 127 .. _`deis/deis.io`: https://github.com/deis/deis.io