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 and compose/__init__.py.
If the next release will be an RC, append rcN, e.g. 1.4.0rc1.
Write release notes in CHANGES.md.
Almost every feature enhancement should be mentioned, with the most visible/exciting ones first. Use descriptive sentences and give context where appropriate.
Bug fixes are worth mentioning if it's likely that they've affected lots of people, or if they were regressions in the previous version.
Improvements to the code are not worth mentioning.
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 [email protected]:docker/compose.git $TAG
Draft a release from the tag on GitHub.
Paste in installation instructions and release notes. Here's an example - change the Compose version and Docker version as appropriate:
Firstly, note that Compose 1.5.0 requires Docker 1.8.0 or later.
Secondly, if you're a Mac user, the **[Docker Toolbox](https://www.docker.com/toolbox)** will install Compose 1.5.0 for you, alongside the latest versions of the Docker Engine, Machine and Kitematic.
Otherwise, you can use the usual commands to install/upgrade. Either download the binary:
curl -L https://github.com/docker/compose/releases/download/1.5.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
Or install the PyPi package:
pip install -U docker-compose==1.5.0
Here's what's new:
...release notes go here...
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 [email protected] and [email protected] 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 [email protected]: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:
CHANGELOG.md to bring it in line with releasecompose/__init__.py to the next minor version number with dev appended. For example, if you just released 1.4.0, update it to 1.5.0dev.Get the PR merged.