github.com/operator-framework/operator-lifecycle-manager@v0.30.0/doc/design/release.md (about) 1 # Steps to create a new release 2 3 The OLM project uses [GoReleaser](https://goreleaser.com/) to automatically produce multi-arch container images and release artifacts during the release process. 4 5 In order to create a new minor version release, simply create a new tag locally, push that tag up to the upstream repository remote, and let automation handle the rest. 6 7 The release automation will be responsible for producing manifest list container images, generating rendered Kubernetes manifests, and a draft release that will contain both of those attached as release artifacts. 8 9 ## Step 0: Review the Release Milestone 10 11 If the release you plan to create corresponds with an existing [milestone](https://github.com/operator-framework/operator-lifecycle-manager/milestones/), make sure that all features have been committed. If a feature will not be added to the release be sure to remove it from the milestone. 12 13 ## Step 1: Setup the Release Tag 14 15 In order to trigger the existing release automation, you need to first create a new tag locally, and push that tag up to the upstream repository remote. 16 17 **Note**: The following steps assume that remote is named `origin`. 18 19 * Pull the latest. 20 * Make sure you are on `master` branch. 21 * Make a new tag that matches the version. 22 * Push tag directly to this repository. 23 24 ```bash 25 # v0.20.0 is the bumped version. 26 git tag -a v0.20.0 -m "Version 0.20.0" 27 28 # origin remote points to operator-framework/operator-lifecycle-manager 29 git push origin v0.20.0 30 ``` 31 32 ## Step 2: Verify that GoReleaser is Running 33 34 Once a manual tag has been created, monitor the progress of the [release workflow action](https://github.com/operator-framework/operator-lifecycle-manager/actions/workflows/goreleaser.yaml) that was triggered when a new tag has been created to ensure a successful run. 35 36 Once successful, navigate to the [quay.io/operator-framework/olm image repository](https://quay.io/repository/operator-framework/olm?tab=tags) and ensure that a new manifest list container image has been created. 37 38 ## Step 3: CHANGELOG Verification 39 40 Navigate to the [releases](https://github.com/operator-framework/operator-lifecycle-manager/releases) tab for the OLM repository, and verify that a draft release has been produced and the generated CHANGELOG appears to be correct. GoReleaser is responsible for generating a CHANGELOG based on the diff between the latest tag, and the tag that was just created, excluding some commit(s) that have a `doc` or `test` prefix. 41 42 ## Step 4: Publish the Draft Release 43 44 * Ensure that all links are valid and works as expected. 45 * Publish the draft release!