Skip to content

Commit c14d206

Browse files
authored
docs: update release checklist (#387)
Add more details to guide the release process.
1 parent 9012cde commit c14d206

File tree

1 file changed

+57
-11
lines changed

1 file changed

+57
-11
lines changed

CONTRIBUTING.md

Lines changed: 57 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,60 @@ $ make all
1616

1717
## Releasing a new SDK version
1818

19-
1. Update the [`VERSION`](./VERSION) file with the new version you want to release.
20-
- The [`oxide/version.go`](./oxide/version.go) file will be automatically updated when you run
21-
`make generate`
22-
2. Make sure you have run `make all` and pushed any changes. The release will fail if running
23-
`make all` causes any changes to the generated code.
24-
3. Generate the changelog with `make changelog`.
25-
4. Run `make tag` from your local `main` branch. This is just a command for making a git tag
26-
formatted correctly with the version.
27-
5. Push the tag (the result of `make tag` gives instructions for this) to this repository.
28-
6. Everything else is triggered from the tag push. Just make sure all the tests pass on the `main`
29-
branch before making and pushing a new tag.
19+
The release process requires you to sign the release tag. Before starting the
20+
release process, ensure you have Git and GitHub configured with a GPG key to
21+
sign commits and tags. Refer to
22+
[GPG commit signature verification](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification#gpg-commit-signature-verification)
23+
for more information.
24+
25+
- [ ] Create a release branch
26+
```
27+
git checkout main
28+
git pull origin main
29+
git checkout -b release-vX.Y.Z
30+
```
31+
- [ ] Update the [`VERSION`](./VERSION) and [`VERSION_OMICRON`](./VERSION_OMICRON) files with the new version you want to release.
32+
- [ ] Generate and lint files.
33+
```
34+
make all
35+
```
36+
- [ ] Ensure the `.changelog/vX.Y.Z.toml` file has the changelog entries for the release and generate changelog.
37+
```
38+
make changelog
39+
```
40+
- [ ] Update the generated file with the release date and associated Oxide API version.
41+
```diff
42+
- # vX.Y.Z
43+
+ # vX.Y.Z (Year/Month/Day)
44+
+
45+
+ Generated from Oxide API version [API VERSION](https://github.com/oxidecomputer/omicron/blob/<OMICRON TAG>/openapi/nexus/nexus-<API VERSION>.json)
46+
```
47+
- [ ] Commit and push updated files.
48+
```
49+
git add -A .
50+
git commit -m 'release vX.Y.Z'
51+
git push origin release-vX.Y.Z
52+
```
53+
- [ ] Open a PR to update `main`.
54+
- [ ] Ensure tests are passing in `main` after merge.
55+
- [ ] Run `make tag` from your local `main` branch.
56+
```
57+
git checkout main
58+
git pull origin main
59+
make tag
60+
```
61+
- [ ] Push the tag to this repository.
62+
```
63+
git push origin vX.Y.Z
64+
```
65+
- [ ] Update the GitHub [release](https://github.com/oxidecomputer/oxide.go/releases) description with the release content generated from `make changelog`.
66+
- [ ] Create and push a release branch from the commit of the release tag.
67+
```
68+
git checkout vX.Y.Z
69+
git checkout -b X.Y
70+
git push origin X.Y
71+
```
72+
- [ ] Create a new branch to prepare the repository for the next version.
73+
- [ ] Update the `VERSION` file with the next development version and run `make generate` to update generated files.
74+
- [ ] Create a new `.changelog/<VERSION>.toml` file with the next development version.
75+
- [ ] Push changes and open PR.

0 commit comments

Comments
 (0)