Skip to content

Latest commit

 

History

History
59 lines (51 loc) · 2.91 KB

CONTRIBUTING.md

File metadata and controls

59 lines (51 loc) · 2.91 KB

Contributing

For styling guidelines, see this document.

Development Environment

The project includes a git submodule that includes various helpers. After cloning, you'll need to make git download it with the following command.

make submodules

The rest is just a usual Golang CLI project where you can find the executables under cmd folder.

Release Process

This is a slimmed-down version of the release process described here.

  1. feature freeze: Merge all completed features into main development branch of all repos to begin "feature freeze" period.
  2. branch repo: Create a new release branch using the GitHub UI for the repo (e.g. release-0.25).
  3. tag release: Run the Tag action on the release branch with the desired version (e.g. v0.25.0).
  4. build/publish: Run the CI action on the release-branch (not on the tag!).
  5. tag next pre-release: Run the tag action on the main development branch with the -0.rc.0 for the next release (e.g. v0.26.0-0.rc.0). (NOTE: we added the -0. prefix to allow correctly sorting release candidates)
  6. verify: Verify all artifacts have been published successfully, perform sanity testing.
    • Check in https://cli.upbound.io/stable?prefix=build/release-0.25/v0.25.0. Download some binaries / package formats and smoke test them, e.g. by
      • (all platforms) download your architecture from the bin folder and run it: up version.
      • TODO: add more here
    • note: You may keep downloading the old version for a while until CDN cache is refreshed.
  7. promote: Run the Promote action on the release branch with the release version being the tag name (e.g. v0.25.0) and the channel being alpha or stable.
  8. verify promotion: Check that https://cli.upbound.io/stable?prefix=stable/v0.25.0/ has the new version.
  9. update homebrew: Run Bump Formula action to open a PR in Homebrew for the new version. Get approval and merge.
  10. release notes:
    • Open the new release tag in https://github.com/upbound/up/tags and click "Create release from tag".
    • "Generate release notes" from previous release ("auto" might not work).
    • Make sure the release notes are complete, presize and well formatted.
    • Publish the well authored Github release.
  11. invalidate CDN cache: If needed see the internal Notion documentation.
  12. wait for CDN: Wait for CloudFront to distribute the artifacts, e.g. wait until curl -sL https://cli.upbound.io | sh -x && ./up version gives the new release.
  13. announce: Announce the release on Twitter, Slack, etc.