Skip to content

Commit 0e8705c

Browse files
committed
(doc) update make new release doc
1 parent cd86d42 commit 0e8705c

File tree

1 file changed

+73
-12
lines changed

1 file changed

+73
-12
lines changed

Documentation/design/release.md

Lines changed: 73 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,93 @@
11
# Steps to create a new release
22

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.
420

5-
1. Pull change from above and make new tag with matching version. Push tag directly to this repo.
621

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.
825

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.
1026

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.
1229

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
1357
Changelogs for OLM are generated using [GitHub Changelog Generator](https://github.com/github-changelog-generator/github-changelog-generator).
1458

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`.)
1665

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)
1867

68+
* Generate the changelog:
1969
```bash
70+
# <start-semver> is the previous version.
71+
# <end-semver> is the new release you have made.
2072
github_changelog_generator -u operator-framework -p operator-lifecycle-manager --since-tag=<start-semver> \
2173
--token=<github-api-token> --future-release=<end-semver> --pr-label="**Other changes:**"
2274
```
75+
* Open a new PR with the changelog.
2376

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.
2583

26-
## QuickStart
2784

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).
2989

30-
Then, add instructions to the GitHub release page to install referencing those manifests.
3190

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

Comments
 (0)