|
6 | 6 | Release Checklist |
7 | 7 | ================= |
8 | 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: |
| 9 | +This document assists maintainers with creating a new Deis product release. |
| 10 | +Please update it to agree with any changes in the process. |
| 11 | + |
| 12 | +Follow these instructions from top to bottom, skipping the sections that do |
| 13 | +not apply. |
| 14 | + |
| 15 | + |
| 16 | +Patch Release |
| 17 | +------------- |
| 18 | + |
| 19 | +- Check out the previous release tag |
| 20 | + |
| 21 | + - ``git checkout vA.B.C`` |
| 22 | + |
| 23 | +- Pull in specific bug-fix commits |
| 24 | + |
| 25 | + - ``git cherry-pick <commit-ish>...`` |
| 26 | + |
| 27 | +- Bump the patch version numbers: |
25 | 28 |
|
26 | 29 | .. code-block:: console |
27 | 30 |
|
28 | | - $ ./contrib/bumpver/bumpver X.Y.Z \ |
29 | | - version/version.go \ |
| 31 | + $ ./contrib/bumpver/bumpver -f A.B.C A.B.D \ |
30 | 32 | README.md \ |
31 | 33 | client/deis.py \ |
32 | 34 | client/setup.py \ |
33 | 35 | contrib/coreos/user-data.example \ |
34 | 36 | controller/deis/__init__.py \ |
| 37 | + deisctl/cmd/cmd.go \ |
35 | 38 | deisctl/deis-version \ |
36 | | - deisctl/deisctl.go \ |
37 | | - docs/contributing/test_plan.rst \ |
38 | 39 | docs/installing_deis/install-deisctl.rst \ |
39 | 40 | docs/installing_deis/install-platform.rst \ |
40 | | - docs/managing_deis/upgrading-deis.rst |
| 41 | + docs/managing_deis/upgrading-deis.rst \ |
| 42 | + docs/reference/api-v1.1.rst \ |
| 43 | + docs/troubleshooting_deis/index.rst \ |
| 44 | + version/version.go |
41 | 45 |
|
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: |
| 46 | +- Update the CHANGELOG to include all commits since the last release |
| 47 | + |
| 48 | + - ``./contrib/util/generate-changelog.sh vA.B.C | cat - CHANGELOG.md > tmp && mv tmp CHANGELOG.md`` |
| 49 | + - change ``HEAD`` at the top to ``vA.B.D`` (the new release) |
| 50 | + - remove any empty sections and proofread for consistency |
| 51 | + |
| 52 | +- ``git grep A.B.C`` to ensure that no old version strings were missed |
| 53 | + |
| 54 | +- Commit and push the tag |
| 55 | + |
| 56 | + - ``git commit -a -m 'chore(release): update version to vA.B.D'`` |
| 57 | + - ``git tag vA.B.D`` |
| 58 | + - ``git push --tags origin vA.B.D`` |
| 59 | + |
| 60 | + |
| 61 | +Major or Minor Release |
| 62 | +---------------------- |
| 63 | + |
| 64 | +- Move any open issues to the next `deis milestone`_, then close this one |
| 65 | +- Check out and update the Deis repo master branch |
| 66 | + |
| 67 | + - ``git checkout master && git pull`` |
| 68 | + |
| 69 | +- Bump the major or minor version numbers |
102 | 70 |
|
103 | 71 | .. code-block:: console |
104 | 72 |
|
105 | | - $ ./contrib/bumpver/bumpver X.Y.Z+git \ |
106 | | - version/version.go \ |
| 73 | + $ ./contrib/bumpver/bumpver -f A.B.D-dev A.B.D \ |
107 | 74 | client/deis.py \ |
108 | | - deisctl/deis-version \ |
109 | | - deisctl/deisctl.go \ |
| 75 | + client/setup.py \ |
110 | 76 | controller/deis/__init__.py \ |
111 | | - README.md |
| 77 | + deisctl/deis-version \ |
| 78 | + version/version.go |
| 79 | +
|
| 80 | + $ ./contrib/bumpver/bumpver -f A.B.C A.B.D \ |
| 81 | + README.md \ |
| 82 | + contrib/coreos/user-data.example \ |
| 83 | + docs/installing_deis/install-deisctl.rst \ |
| 84 | + docs/installing_deis/install-platform.rst \ |
| 85 | + docs/managing_deis/upgrading-deis.rst \ |
| 86 | + docs/reference/api-v1.1.rst \ |
| 87 | + docs/troubleshooting_deis/index.rst |
| 88 | +
|
| 89 | + - Edit deisctl/cmd/cmd.go and change the default in the RefreshUnits usage string |
| 90 | + (near the bottom of the file) from ``[master]`` to ``[vA.B.D]``. |
| 91 | + |
| 92 | +- Update the CHANGELOG to include all commits since the last release |
| 93 | + |
| 94 | + - ``./contrib/util/generate-changelog.sh vA.B.C | cat - CHANGELOG.md > tmp && mv tmp CHANGELOG.md`` |
| 95 | + - change ``HEAD`` at the top to ``vA.B.D`` (the new release) |
| 96 | + - remove any empty sections and proofread for consistency |
| 97 | + |
| 98 | +- ``git grep A.B.C`` to ensure that no old version strings were missed |
| 99 | + |
| 100 | +- Commit and push the tag to master |
| 101 | + |
| 102 | + - ``git commit -a -m 'chore(release): update version to vA.B.D'`` |
| 103 | + - ``git push origin master`` |
| 104 | + - ``git tag vA.B.D`` |
| 105 | + - ``git push --tags origin vA.B.D`` |
| 106 | + |
| 107 | + |
| 108 | +Any Release |
| 109 | +----------- |
| 110 | + |
| 111 | +- Trigger CI jobs manually at https://ci.deis.io/, specifying the new vA.B.D tag |
| 112 | + |
| 113 | + - build-deis-cli-installer-darwin |
| 114 | + - build-deis-cli-installer-linux |
| 115 | + - build-deisctl-installer-darwin |
| 116 | + - build-deisctl-installer-linux |
| 117 | + - *after* these client jobs finish, trigger test-acceptance |
| 118 | + |
| 119 | +- Publish Deis CLI to pypi.python.org |
| 120 | + |
| 121 | + - ``pushd client && python setup.py sdist upload && popd`` |
| 122 | + |
| 123 | +- Publish docs to pythonhosted.org/deis |
| 124 | + |
| 125 | + - ``make -C docs clean zipfile`` |
| 126 | + - upload docs/docs.zip to the web form at the `Deis pypi`_ page |
| 127 | + |
| 128 | +- Update the installer scripts at `deis/deis.io`_ to reference new version A.B.D |
| 129 | + |
| 130 | + - https://github.com/deis/deis.io/blob/gh-pages/deis-cli/install.sh |
| 131 | + - https://github.com/deis/deis.io/blob/gh-pages/deisctl/install.sh |
| 132 | + |
| 133 | +- Update published doc versions at ReadTheDocs |
| 134 | + |
| 135 | + - log in to the https://readthedocs.org/ admin |
| 136 | + - add the current release to the published versions |
| 137 | + - remove the oldest version from the list of published builds |
| 138 | + - rebuild all published versions so their "Versions" index links update |
| 139 | + |
| 140 | +- Update the Homebrew install recipes for ``deis`` and ``deisctl`` with PRs |
| 141 | + |
| 142 | + - https://github.com/Homebrew/homebrew/blob/master/Library/Formula/deis.rb |
| 143 | + (check for updated python requirements too) |
| 144 | + - https://github.com/Homebrew/homebrew/pull/34967 |
| 145 | + |
| 146 | +- Update #deis IRC channel topic to reference new version |
| 147 | + |
| 148 | + |
| 149 | +Patch Release |
| 150 | +------------- |
| 151 | + |
| 152 | +- Bump the version numbers in master to the new release |
| 153 | + |
| 154 | + .. code-block:: console |
| 155 | +
|
| 156 | + ./contrib/bumpver/bumpver -f A.B.C A.B.D \ |
| 157 | + README.md \ |
| 158 | + contrib/coreos/user-data.example \ |
| 159 | + docs/installing_deis/install-deisctl.rst \ |
| 160 | + docs/installing_deis/install-platform.rst \ |
| 161 | + docs/managing_deis/upgrading-deis.rst \ |
| 162 | + docs/reference/api-v1.1.rst \ |
| 163 | + docs/troubleshooting_deis/index.rst |
| 164 | +
|
| 165 | + - ``git commit -a -m 'chore(release): update version in master to vA.B.D'`` |
| 166 | + - ``git push origin master`` |
| 167 | + |
| 168 | +- Create `release notes`_ on GitHub |
| 169 | + |
| 170 | + - copy and paste the newly added CHANGELOG.md section as the body |
| 171 | + - preface with an explanatory paragraph if necessary, for example to reference |
| 172 | + security fixes or point out upgrade details |
| 173 | + |
| 174 | + |
| 175 | +Major or Minor Release |
| 176 | +---------------------- |
112 | 177 |
|
113 | 178 | - 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! |
| 179 | + (near the bottom of the file) from ``[vA.B.D]`` to ``[master]`` |
| 180 | +- Bump the version numbers in master to the next planned with ``-dev`` |
| 181 | + |
| 182 | + .. code-block:: console |
| 183 | +
|
| 184 | + $ ./contrib/bumpver/bumpver -f A.B.D A.B.E-dev \ |
| 185 | + client/deis.py \ |
| 186 | + client/setup.py \ |
| 187 | + controller/deis/__init__.py \ |
| 188 | + deisctl/deis-version \ |
| 189 | + version/version.go |
| 190 | +
|
| 191 | + - ``git commit -a -m 'chore(release): update version in master to vA.B.D'`` |
| 192 | + - ``git push origin master`` |
| 193 | + |
| 194 | +- Create release notes blog post at `deis/deis.io`_ following previous formats |
| 195 | +- Create `release notes`_ at GitHub |
| 196 | + |
| 197 | + - copy and paste from the previous blog post |
| 198 | + - remove Jekyll-specific headers and ``<!-- more -->`` tag |
| 199 | + |
| 200 | +- Update HipChat channel topic to reference the next planned version |
118 | 201 |
|
119 | 202 |
|
120 | 203 | .. _`deis milestone`: https://github.com/deis/deis/issues/milestones |
121 | 204 | .. _`deis open issues`: https://github.com/deis/deis/issues?state=open |
122 | 205 | .. _`changelog script`: https://github.com/deis/deis/blob/master/contrib/util/generate-changelog.sh |
123 | 206 | .. _`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/ |
| 207 | +.. _`Deis pypi`: https://pypi.python.org/pypi/deis/ |
127 | 208 | .. _`deis/deis.io`: https://github.com/deis/deis.io |
0 commit comments