certificates/docs/distribution.md
2018-11-13 21:31:57 -08:00

3.5 KiB

Distribution

This section describes how to build and deploy publicly available releases of the Step CLI.

Creating A New Release

New releases are (almost) entirely built and deployed by Travis-CI. Creating a new release is as simple as pushing a new github tag.

Definitions:

  • Standard Release: ready for public use. no -rc* suffix on the version. e.g. v1.0.2
  • Release Candidate: not ready for public use, still testing. must have a -rc* suffix. e.g. v1.0.2-rc or v1.0.2-rc.4
  1. Figure out the most recent existing tag.

    git fetch --tags
    git tag
    

    The new tag needs to be the logical successor of the most recent existing tag. See versioning section for more information on version numbers.

  2. Select the next tag (but don't actually tag anything yet!!).

    Is the new release a release candidate or a standard release?

    1. Release Candidate

      If the most recent tag is a standard release, say v1.0.2, then the version of the next release candidate should be v1.0.3-rc.1. If the most recent tag is a release candidate, say v1.0.2-rc.3, then the version of the next release candidate should be v1.0.2-rc.4.

    2. Standard Release

      If the most recent tag is a standard release, say v1.0.2, then the version of the next standard release should be v1.0.3. If the most recent tag is a release candidate, say v1.0.2-rc.3, then the version of the next standard release should be v1.0.3.

  3. Update the debian/changelog.

    1. Update the version to match the tag selected in the previous step. Leave off the v prefix.

      step-cli (1.0.2) UNRELEASED; urgency=medium
      ...
      

      becomes...

      step-cli (1.0.3) UNRELEASED; urgency=medium
      ...
      
    2. Update the change log.

      sigh Honestly, this entire step should be handled programmatically.

    3. Commit the changes.

  4. Update the remote origin with your commits.

    Make sure that the local checkout is up to date with with the remote origin and that all local changes have been pushed.

    git pull --rebase origin master
    git push
    
  5. Create a local tag.

    git tag v1.0.3   # standard release
    ...or
    git tag v1.0.3-rc.1  # release candidate
    
  6. Push the new tag to the remote origin.

    git push origin tag v1.0.3   # standard release
    ...or
    git push origin tag v1.0.3-rc.1  # release candidate
    
  7. Check the build status at Travis-CI.

    Travis will begin by verifying that there are no compilation or linting errors and then run the unit tests. Assuming all the checks have passed, Travis will build Darwin and Linux artifacts (for easily installing step) and upload them as part of the Github Release.

    Travis will build and upload the following artifacts:

    • step-ca_1.0.3_amd64.deb: debian package for installation on linux.
    • step-ca_1.0.3_linux_amd64.tar.gz: tarball containing a statically compiled linux binary.
    • step-ca_1.0.3_darwin_amd64.tar.gz: tarball containing a statically compiled darwin binary.
  8. Update the Homebrew formula.

    NOTE: this only needs to be done for standard releases.

    Follow the steps here.

All Done!