|
| 1 | +# Release Process for OLM v1 |
| 2 | + |
| 3 | +## Choosing version increment |
| 4 | +When making releases for operator-controller, version increments should adhere strictly to Semantic Versioning. In short: |
| 5 | +* Major: API breaking change(s) are made. |
| 6 | +* Minor: Backwards compatible features are added. |
| 7 | +* Patch: Backwards compatible bug fix is made. |
| 8 | + |
| 9 | +When a major or minor release being made is associated with one or more milestones, please ensure that all related features have been merged into the `main` branch before continuing. |
| 10 | + |
| 11 | +## Creating the release |
| 12 | +Note that throughout this guide, the `upstream` remote refers to the `operator-framework/operator-controller` repository. |
| 13 | + |
| 14 | +The release process differs slightly based on whether a patch or major/minor release is being made. |
| 15 | + |
| 16 | +### Patch Release |
| 17 | +#### Step 1 |
| 18 | +In this example we will be creating a new patch release from version `v1.2.3`, on the branch `release-v1.2`. |
| 19 | +First ensure that the release branch has been updated on remote with the changes from the patch, then perform the following: |
| 20 | +```bash |
| 21 | +git fetch upstream release-v1.2 |
| 22 | +git pull release-v1.2 |
| 23 | +git checkout release-v1.2 |
| 24 | +``` |
| 25 | + |
| 26 | +#### Step 2 |
| 27 | +Create a new tag, incrementing the patch number from the previous version. In this case, we'll be incrementing from `v1.2.3` to `v1.2.4`: |
| 28 | +```bash |
| 29 | +## Previous version was v1.2.3, so we bump the patch number up by one |
| 30 | +git tag v1.2.4 |
| 31 | +git push upstream v1.2.4 |
| 32 | +``` |
| 33 | + |
| 34 | +### Major/Minor Release |
| 35 | +#### Step 1 |
| 36 | +Create a release branch from `main` branch for the target release. Follow the pattern `release-<MAJOR>.<MINOR>` when naming the branch; for example: `release-v1.2`. The patch version should not be included in the branch name in order to facilitate an easier patch process. |
| 37 | +```bash |
| 38 | +git checkout main |
| 39 | +git fetch upstream main |
| 40 | +git pull main |
| 41 | +git checkout -b release-v1.2 |
| 42 | +git push upstream release-v1.2 |
| 43 | +``` |
| 44 | + |
| 45 | +#### Step 2 |
| 46 | +Create and push our tag for the current release. |
| 47 | +```bash |
| 48 | +git tag v1.2.0 |
| 49 | +git push upstream v1.2.0 |
| 50 | +``` |
| 51 | + |
| 52 | +### Post-Steps |
| 53 | +Once the tag has been pushed the release action should run automatically. You can view the progress [here](https://github.com/operator-framework/operator-lifecycle-manager/actions/workflows/goreleaser.yaml). When finished, the release should then be available on the [releases page](https://github.com/operator-framework/operator-controller/releases). |
0 commit comments