For styling guidelines, see this document.
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.
This is a slimmed-down version of the release process described here.
- feature freeze: Merge all completed features into main development branch of all repos to begin "feature freeze" period.
- branch repo: Create a new release branch using the GitHub UI for the
repo (e.g.
release-0.25
). - tag release: Run the
Tag
action on the release branch with the desired version (e.g.v0.25.0
). - build/publish: Run the
CI
action on the release-branch (not on the tag!). - 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) - 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
- (all platforms) download your architecture from the
- note: You may keep downloading the old version for a while until CDN cache is refreshed.
- 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
- 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 beingalpha
orstable
. - verify promotion: Check that https://cli.upbound.io/stable?prefix=stable/v0.25.0/ has the new version.
- update homebrew: Run
Bump Formula
action to open a PR in Homebrew for the new version. Get approval and merge. - 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.
- invalidate CDN cache: If needed see the internal Notion documentation.
- 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. - announce: Announce the release on Twitter, Slack, etc.
- Crossplane Slack #Upbound: https://crossplane.slack.com/archives/C01TRKD4623
- TODO: where else?