-
Create a
bump-$VERSION
branch off master:git checkout -b bump-$VERSION master
-
Merge in the
release
branch on the upstream repo, discarding its tree entirely:git fetch origin git merge --strategy=ours origin/release
-
Update the version in
docs/install.md
andcompose/__init__.py
.If the next release will be an RC, append
rcN
, e.g.1.4.0rc1
. -
Write release notes in
CHANGES.md
. -
Add a bump commit:
git commit -am "Bump $VERSION"
-
Push the bump branch to your fork:
git push --set-upstream $USERNAME bump-$VERSION
-
Open a PR from the bump branch against the
release
branch on the upstream repo, not against master.
-
Check out the bump branch:
git checkout bump-$VERSION
-
Cherry-pick the merge commit, fixing any conflicts if necessary:
git cherry-pick -xm1 $MERGE_COMMIT_HASH
-
Add a signoff (it’s missing from merge commits):
git commit --amend --signoff
-
Move the bump commit back to the tip of the branch:
git rebase --interactive $PARENT_OF_BUMP_COMMIT
-
Force-push the bump branch to your fork:
git push --force $USERNAME bump-$VERSION
-
Check that CI is passing on the bump PR.
-
Check out the bump branch:
git checkout bump-$VERSION
-
Build the Linux binary:
script/build-linux
-
Build the Mac binary in a Mountain Lion VM:
script/prepare-osx script/build-osx
-
Test the binaries and/or get some other people to test them.
-
Create a tag:
TAG=$VERSION # or $VERSION-rcN, if it's an RC git tag $TAG
-
Push the tag to the upstream repo:
git push git@github.com:docker/compose.git $TAG
-
Create a release from the tag on GitHub.
-
Paste in installation instructions and release notes.
-
Attach the binaries.
-
Don’t publish it just yet!
-
Upload the latest version to PyPi:
python setup.py sdist upload
-
Check that the pip package installs and runs (best done in a virtualenv):
pip install -U docker-compose==$TAG docker-compose version
-
Publish the release on GitHub.
-
Check that both binaries download (following the install instructions) and run.
-
Email maintainers@dockerproject.org and engineering@docker.com about the new release.
-
Merge the bump PR.
-
Make sure
origin/release
is updated locally:git fetch origin
-
Update the
docs
branch on the upstream repo:git push git@github.com:docker/compose.git origin/release:docs
-
Let the docs team know that it’s been updated so they can publish it.
-
Close the release’s milestone.
-
Open a PR against
master
to:- update
CHANGELOG.md
to bring it in line withrelease
- bump the version in
compose/__init__.py
to the next minor version number withdev
appended. For example, if you just released1.4.0
, update it to1.5.0dev
.
- update
-
Get the PR merged.
- Celebrate however you’d like.
This is looking great! I have a couple of questions:
How do we do that? Do we detail every PR or do you use your judgement and pick only "highlights"
I'm afraid I don't understand what this means. We've pushed a branch with the release tag to GitHub, so what does create a release mean, is it the build binaries step again?
Which installation instructions? Do we generate new instructions for each release or are we copying this file compose/docs/install.md? Sorry if this is a stupid question :/