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!