Signed-off-by: Arnaud Porterie <arnaud.porterie@docker.com>
| ... | ... |
@@ -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 |
``` |