Release Process
Prerequisites / Assumptions
Releases are built and published using the
mainbranchThe release process documented here should come _after_ a “release preparation” pull request gets merged. That pull request should:
Increment package versions (via
make pkg-increment)Update dependencies (via
make pkg-rebase)Resolve any test breakages related to those dependency updates
Note
For reference, here is an example pull request preparing for release 0.9.17.0.
You’ll need GitHub CLI and twine installed as well.
Run Functional Tests
Before releasing we run functional tests to ensure trunk is suitable for release:
gh workflow run functional.yaml
On success it will notify into the slack channel #github-ci
Release artifact creation
Producing wheels and changelog has been automated via GitHub actions, to create release artifacts:
gh workflow run release.yml
This will create wheels, upload them to a private PyPI (AWS Code Artifact), test wheel installation, test basic usage, and generate a changelog.
Download the release artifacts into a clean working copy:
make release-get-artifacts
Open the Changelog (release.md) in a text editor and adjust accordingly so that it makes sense for humans.
Create a new release on the cloud-custodian repository
Paste in the changelog when making a release:
cat release.md | pbcopy # OSX-only
cat release.md | xsel -c # Linux/X11 .. for Wayland see wl-clipboard
Create a new tag (such as 0.9.49.0):
Publish Wheel
make pkg-publish-wheel PKG_REPO=prodpypi
Announce
The release process will automatically publish a notification to the #announcements channel in
the community Slack. It is helpful to post in #general
also for visibility.