Browse code

Update RELEASE-CHECKLIST.md

Signed-off-by: Arnaud Porterie <arnaud.porterie@docker.com>

Arnaud Porterie authored on 2015/02/24 04:32:28
Showing 1 changed files
... ...
@@ -126,8 +126,12 @@ a count, add a simple `| wc -l`.
126 126
 
127 127
 ### 3. Change the contents of the VERSION file
128 128
 
129
+Before the big thing, you'll want to make successive release candidates and get
130
+people to test. The release candidate number `N` should be part of the version:
131
+
129 132
 ```bash
130
-echo ${VERSION#v} > VERSION
133
+export RC_VERSION=${VERSION}-rcN
134
+echo ${RC_VERSION#v} > VERSION
131 135
 ```
132 136
 
133 137
 ### 4. Test the docs
... ...
@@ -162,11 +166,10 @@ That last command will give you the proper link to visit to ensure that you
162 162
 open the PR against the "release" branch instead of accidentally against
163 163
 "master" (like so many brave souls before you already have).
164 164
 
165
-### 6. Get 2 other maintainers to validate the pull request
166
-
167
-### 7. Publish binaries
165
+### 6. Publish release candidate binaries
168 166
 
169
-To run this you will need access to the release credentials. Get them from the Core maintainers.
167
+To run this you will need access to the release credentials. Get them from the
168
+Core maintainers.
170 169
 
171 170
 Replace "..." with the respective credentials:
172 171
 
... ...
@@ -182,17 +185,23 @@ docker run \
182 182
        hack/release.sh
183 183
 ```
184 184
 
185
-It will run the test suite, build the binaries and packages,
186
-and upload to the specified bucket (you should use test.docker.com for
187
-general testing, and once everything is fine, switch to get.docker.com as
188
-noted below).
185
+It will run the test suite, build the binaries and packages, and upload to the
186
+specified bucket, so this is a good time to verify that you're running against
187
+**test**.docker.com.
189 188
 
190 189
 After the binaries and packages are uploaded to test.docker.com, make sure
191 190
 they get tested in both Ubuntu and Debian for any obvious installation
192 191
 issues or runtime issues.
193 192
 
194
-Announcing on IRC in both `#docker` and `#docker-dev` is a great way to get
195
-help testing!  An easy way to get some useful links for sharing:
193
+If everything looks good, it's time to create a git tag for this candidate:
194
+
195
+```bash
196
+git tag -a $RC_VERSION -m $RC_VERSION bump_$VERSION
197
+git push origin $RC_VERSION
198
+```
199
+
200
+Announcing on multiple medias is the best way to get some help testing! An easy
201
+way to get some useful links for sharing:
196 202
 
197 203
 ```bash
198 204
 echo "Ubuntu/Debian: https://test.docker.com/ubuntu or curl -sSL https://test.docker.com/ | sh"
... ...
@@ -202,21 +211,15 @@ echo "Darwin/OSX 32bit client binary: https://test.docker.com/builds/Darwin/i386
202 202
 echo "Linux 64bit tgz: https://test.docker.com/builds/Linux/x86_64/docker-${VERSION#v}.tgz"
203 203
 ```
204 204
 
205
-Once they're tested and reasonably believed to be working, run against
206
-get.docker.com:
205
+We recommend announcing the release candidate on:
207 206
 
208
-```bash
209
-docker run \
210
-       -e AWS_S3_BUCKET=get.docker.com \
211
-       -e AWS_ACCESS_KEY="..." \
212
-       -e AWS_SECRET_KEY="..." \
213
-       -e GPG_PASSPHRASE="..." \
214
-       -i -t --privileged \
215
-       docker \
216
-       hack/release.sh
217
-```
207
+- IRC on #docker, #docker-dev, #docker-maintainers
208
+- In a comment on the pull request to notify subscribed people on GitHub
209
+- The [docker-dev](https://groups.google.com/forum/#!forum/docker-dev) group
210
+- The [docker-maintainers](https://groups.google.com/a/dockerproject.org/forum/#!forum/maintainers) group
211
+- Any social media that can get bring some attention to the release cabdidate
218 212
 
219
-### 8. Breakathon
213
+### 7. Iterate on successive release candidates
220 214
 
221 215
 Spend several days along with the community explicitly investing time and
222 216
 resources to try and break Docker in every possible way, documenting any
... ...
@@ -232,6 +235,74 @@ by the book.
232 232
 Any issues found may still remain issues for this release, but they should be
233 233
 documented and give appropriate warnings.
234 234
 
235
+During this phase, the `bump_$VERSION` branch will keep evolving as you will
236
+produce new release candidates. The frequency of new candidates is up to the
237
+release manager: use your best judgement taking into account the severity of
238
+reported issues, testers availability, and time to scheduled release date.
239
+
240
+Each time you'll want to produce a new release candidate, you will start by
241
+adding commits to the branch, usually by cherry-picking from master:
242
+
243
+```bash
244
+git cherry-pick -x -m0 <commit_id>
245
+```
246
+
247
+You want your "bump commit" (the one that updates the CHANGELOG and VERSION
248
+files) to remain on top, so you'll have to `git rebase -i` to bring it back up.
249
+
250
+Now that your bump commit is back on top, you will need to update the CHANGELOG
251
+file (if appropriate for this particular release candidate), and update the
252
+VERSION file to increment the RC number:
253
+
254
+```bash
255
+export RC_VERSION=$VERSION-rcN
256
+echo $RC_VERSION > VERSION
257
+```
258
+
259
+You can now amend your last commit and update the bump branch:
260
+
261
+```bash
262
+git commit --amend
263
+git push -f $GITHUBUSER bump_$VERSION
264
+```
265
+
266
+Repeat step 6 to tag the code, publish new binaries, announce availability, and
267
+get help testing.
268
+
269
+### 8. Finalize the bump branch
270
+
271
+When you're happy with the quality of a release candidate, you can move on and
272
+create the real thing.
273
+
274
+You will first have to amend the "bump commit" to drop the release candidate
275
+suffix in the VERSION file:
276
+
277
+```bash
278
+echo $VERSION > VERSION
279
+git add VERSION
280
+git commit --amend
281
+```
282
+
283
+You will then repeat step 6 to publish the binaries to test
284
+
285
+### 9. Get 2 other maintainers to validate the pull request
286
+
287
+### 10. Publish final binaries
288
+
289
+Once they're tested and reasonably believed to be working, run against
290
+get.docker.com:
291
+
292
+```bash
293
+docker run \
294
+       -e AWS_S3_BUCKET=get.docker.com \
295
+       -e AWS_ACCESS_KEY="..." \
296
+       -e AWS_SECRET_KEY="..." \
297
+       -e GPG_PASSPHRASE="..." \
298
+       -i -t --privileged \
299
+       docker \
300
+       hack/release.sh
301
+```
302
+
235 303
 ### 9. Apply tag
236 304
 
237 305
 It's very important that we don't make the tag until after the official
... ...
@@ -279,17 +350,13 @@ distributed CDN system) is flushed. The `make docs-release` command will do this
279 279
 _if_ the `DISTRIBUTION_ID` is set correctly - this will take at least 15 minutes to run
280 280
 and you can check its progress with the CDN Cloudfront Chrome addin.
281 281
 
282
-### 12. Create a new pull request to merge release back into master
282
+### 12. Create a new pull request to merge your bump commit back into master
283 283
 
284 284
 ```bash
285 285
 git checkout master
286 286
 git fetch
287 287
 git reset --hard origin/master
288
-git checkout -b merge_release_$VERSION
289
-git merge origin/release
290
-echo ${VERSION#v}-dev > VERSION
291
-git add VERSION
292
-git commit -m "Change version to $(cat VERSION)"
288
+git cherry-pick $VERSION
293 289
 git push $GITHUBUSER merge_release_$VERSION
294 290
 echo "https://github.com/$GITHUBUSER/docker/compare/docker:master...$GITHUBUSER:merge_release_$VERSION?expand=1"
295 291
 ```