4.6 KiB
Building a Compose release
To get started with a new release
-
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
.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.
When a PR is merged into master that we want in the release
-
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
To release a version (whether RC or stable)
-
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
-
Draft a release from the tag on GitHub.
- Go to https://github.com/docker/compose/releases and click "Draft a new release".
- In the "Tag version" dropdown, select the tag you just pushed.
-
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 maintainers@dockerproject.org and engineering@docker.com about the new release.
If it’s a stable release (not an RC)
-
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.
If it’s a minor release (1.x.0), rather than a patch release (1.x.y)
-
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.
Finally
- Celebrate, however you’d like.