compose/RELEASE_PROCESS.md

3.3 KiB
Raw Blame History

Building a Compose release

To get started with a new release

  1. Create a bump-$VERSION branch off master:

    git checkout -b bump-$VERSION master
    
  2. Merge in the release branch on the upstream repo, discarding its tree entirely:

    git fetch origin
    git merge --strategy=ours origin/release
    
  3. 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.

  4. Write release notes in CHANGES.md.

  5. Add a bump commit:

    git commit -am "Bump $VERSION"

  6. Push the bump branch to your fork:

    git push --set-upstream $USERNAME bump-$VERSION

  7. 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

  1. Check out the bump branch:

    git checkout bump-$VERSION
    
  2. Cherry-pick the merge commit, fixing any conflicts if necessary:

    git cherry-pick -xm1 $MERGE_COMMIT_HASH

  3. Add a signoff (its missing from merge commits):

    git commit --amend --signoff
    
  4. Move the bump commit back to the tip of the branch:

    git rebase --interactive $PARENT_OF_BUMP_COMMIT
    
  5. Force-push the bump branch to your fork:

    git push --force $USERNAME bump-$VERSION
    

To release a version (whether RC or stable)

  1. Check that CI is passing on the bump PR.

  2. Check out the bump branch:

    git checkout bump-$VERSION
    
  3. Build the Linux binary:

    script/build-linux
    
  4. Build the Mac binary in a Mountain Lion VM:

    script/prepare-osx
    script/build-osx
    
  5. Test the binaries and/or get some other people to test them.

  6. Create a tag:

    TAG=$VERSION # or $VERSION-rcN, if it's an RC
    git tag $TAG
    
  7. Push the tag to the upstream repo:

    git push git@github.com:docker/compose.git $TAG
    
  8. Create a release from the tag on GitHub.

  9. Paste in installation instructions and release notes.

  10. Attach the binaries.

  11. Dont publish it just yet!

  12. Upload the latest version to PyPi:

    python setup.py sdist upload
    
  13. Check that the pip package installs and runs (best done in a virtualenv):

    pip install -U docker-compose==$TAG
    docker-compose version
    
  14. Publish the release on GitHub.

  15. Check that both binaries download (following the install instructions) and run.

  16. Email maintainers@dockerproject.org and engineering@docker.com about the new release.

If its a stable release (not an RC)

  1. Merge the bump PR.

  2. Make sure origin/release is updated locally:

     git fetch origin
    
  3. Update the docs branch on the upstream repo:

     git push git@github.com:docker/compose.git origin/release:docs
    
  4. Let the docs team know that its been updated so they can publish it.

  5. Close the releases milestone.

If its a minor release (1.x.0), rather than a patch release (1.x.y)

  1. Open a PR against master to:

    • update CHANGELOG.md to bring it in line with release
    • bump the version in compose/__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.
  2. Get the PR merged.

Finally

  1. Celebrate, however youd like.