|
1 | 1 | # Steps to create a new release
|
2 | 2 |
|
3 |
| -1. Bump version in OLM_VERSION file. Make a PR and wait until it has been merged. |
| 3 | +## Step 1: Verify Manifests |
| 4 | +We need to ensure that `manifests` folder is in sync with the templates in `deploy/chart/templates`. |
| 5 | +* Make sure you have a clean workspace. `git status` should show no change(s) or untracked file. |
| 6 | +* Make sure you pull the latest from `upstream`. |
| 7 | +* Checkout `master` branch. |
| 8 | +* Run `make release` |
| 9 | + |
| 10 | +This should generate no change(s) in `manifests` folder. If there are no change(s) in `manifests` folder then you can proceed with the new release. |
| 11 | +You can clean your workspace |
| 12 | +```bash |
| 13 | +git checkout -- . |
| 14 | +git clean -df |
| 15 | +``` |
| 16 | + |
| 17 | +If you see change(s) in `manifests` folder, then: |
| 18 | +* STOP the release process |
| 19 | +* Consult the team and backport the changes in `manifests` folder into the templates. |
4 | 20 |
|
5 |
| -1. Pull change from above and make new tag with matching version. Push tag directly to this repo. |
6 | 21 |
|
7 |
| -1. Confirm that new images have been built here: <https://quay.io/repository/operator-framework/olm?tab=builds>. |
| 22 | +## Step 2: Bump the Version |
| 23 | +* Bump the version in `OLM_VERSION` file. Make a new PR with this change only. |
| 24 | +* Wait until the PR has been merged. |
8 | 25 |
|
9 |
| -1. Run `make release` on master branch (easiest if done with a clean working directory). Make a PR and ensure all tests pass for merging. |
10 | 26 |
|
11 |
| -## Changelog Generation |
| 27 | +## Step 3: Setup Tag |
| 28 | +If git `push` is disabled on `upstream` repository in your fork, then clone this repository so that you can push to `master` directly. |
12 | 29 |
|
| 30 | +* Pull the latest. |
| 31 | +* Make sure you are on `master` branch. |
| 32 | +* Make a new tag that matches the version. |
| 33 | +* Push tag directly to this repository. |
| 34 | + |
| 35 | +```bash |
| 36 | +# 0.11.0 is the bumped version. |
| 37 | +git tag -a 0.11.0 -m "Version 0.11.0" |
| 38 | + |
| 39 | +# origin points to operator-framework/operator-lifecycle-manager |
| 40 | +git push origin 0.11.0 |
| 41 | +``` |
| 42 | + |
| 43 | +* Confirm that new images have been built here: <https://quay.io/repository/operator-framework/olm?tab=builds>. |
| 44 | + |
| 45 | + |
| 46 | +## Step 3: Generate Manifests |
| 47 | +* Make sure you have a clean workspace. `git status` should show no change(s) or untracked file. |
| 48 | +* Make sure you pull the latest from `upstream`. |
| 49 | +* Run `make release` on `master` branch. |
| 50 | +* Make a new PR and ensure all tests pass for merging. |
| 51 | + |
| 52 | +Verify the following: |
| 53 | +* The image digest in manifest file(s) matches the new tag in `quay.io`. |
| 54 | +* `manifests` folder only differs in version and image. |
| 55 | + |
| 56 | +## Step 4: Generate Changelog |
13 | 57 | Changelogs for OLM are generated using [GitHub Changelog Generator](https://github.com/github-changelog-generator/github-changelog-generator).
|
14 | 58 |
|
15 |
| -If the gem command is available, one can install via `gem install github_changelog_generator`. Afterward installing it may be worth modifying the MAX_THREAD_NUMBER to something lower similar to what is done here: <https://github.com/github-changelog-generator/github-changelog-generator/pull/661>. Note that the referenced PR has been merged, but the number is still too high. Although 1 is a very low value, it does seem to work more reliably. (On Fedora, the install location for the gem is ~/.gem/ruby/gems/github_changelog_generator-1.14.3/lib/github_changelog_generator/octo_fetcher.rb.) |
| 59 | +You need to have `gem` installed on your workstation. Execute the following command to install `github-changelog-generator`. |
| 60 | +```bash |
| 61 | +gem install github_changelog_generator |
| 62 | +``` |
| 63 | + |
| 64 | +Afterward installing it may be worth modifying the `MAX_THREAD_NUMBER` to something lower similar to what is done here: <https://github.com/github-changelog-generator/github-changelog-generator/pull/661>. Note that the referenced PR has been merged, but the number is still too high. Although 1 is a very low value, it does seem to work more reliably. (On Fedora, the install location for the gem is `~/.gem/ruby/gems/github_changelog_generator-1.14.3/lib/github_changelog_generator/octo_fetcher.rb`.) |
16 | 65 |
|
17 |
| -Now the changelog can be generated: |
| 66 | +Make sure you have a GitHub API access token. You can generate one from [tokens](https://github.com/settings/tokens) |
18 | 67 |
|
| 68 | +* Generate the changelog: |
19 | 69 | ```bash
|
| 70 | +# <start-semver> is the previous version. |
| 71 | +# <end-semver> is the new release you have made. |
20 | 72 | github_changelog_generator -u operator-framework -p operator-lifecycle-manager --since-tag=<start-semver> \
|
21 | 73 | --token=<github-api-token> --future-release=<end-semver> --pr-label="**Other changes:**"
|
22 | 74 | ```
|
| 75 | +* Open a new PR with the changelog. |
23 | 76 |
|
24 |
| -The resulting CHANGELOG.md file can be copied into a new release created via <https://github.com/operator-framework/operator-lifecycle-manager/releases/new>. Also, make sure to commit the new changes to CHANGELOG.md as well. |
| 77 | +## Step 5: Create a New GitHub Release |
| 78 | +* Create a new GtiHub release [here](https://github.com/operator-framework/operator-lifecycle-manager/releases/new) |
| 79 | +* Choose the new tag matching the version you created. |
| 80 | +* You can set `Title` to the same value as the tag name. |
| 81 | +* Add the generated `changelog` to the release description. |
| 82 | +* Save `draft` of the release. |
25 | 83 |
|
26 |
| -## QuickStart |
27 | 84 |
|
28 |
| -Edit the GitHub Release and upload the files in `deploy/upstream/quickstart` as release artifacts. |
| 85 | +## Step 5: QuickStart |
| 86 | +Edit the GitHub Release: |
| 87 | +* Upload the files `crds.yam`, `install.sh` and `olm.yaml` as release artifacts. These files are located in `deploy/upstream/quickstart` |
| 88 | +* Add install instruction, see an [example here](https://github.com/operator-framework/operator-lifecycle-manager/releases/tag/0.10.0#Install). |
29 | 89 |
|
30 |
| -Then, add instructions to the GitHub release page to install referencing those manifests. |
31 | 90 |
|
32 |
| -See an [example here](https://github.com/operator-framework/operator-lifecycle-manager/releases/tag/0.10.0#Install). |
| 91 | +## Step 6: Publish Release |
| 92 | +* Ensure that all links are valid and works as expected. |
| 93 | +* Publish the release! |
0 commit comments