Skip to content

Commit d854874

Browse files
authored
Document release process (#847)
1 parent aadb2b9 commit d854874

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed

CONTRIBUTING.md

+68
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,74 @@ suggestions invoke it directly:
7676
vale somefile
7777
```
7878

79+
## Creating releases
80+
81+
To keep the release process in line with best practices for open source
82+
repositories, not all steps are automated. Specifically, tags should be signed
83+
and pushed manually and the release notes should be human readable beyond what
84+
most automatically generated changelogs provide.
85+
86+
1. Bump the current version in the following files:
87+
88+
- `flake.nix`
89+
- `MODULE.bazel`
90+
- `Cargo.toml`
91+
- `nativelink-*/Cargo.toml`
92+
- `nativelink-docs/package.json`
93+
94+
2. Run `git cliff --tag=0.x.y > CHANGELOG.md` to update the changelog. You might
95+
need to make manual adjustments to `cliff.toml` if `git-cliff` doesn't put a
96+
commit in the right subsection.
97+
98+
3. Create the commit and PR. Call it `Release NativeLink v0.x.y`.
99+
100+
4. Once the PR is merged, update your local repository and origin:
101+
102+
```bash
103+
git switch main
104+
git pull -r upstream main
105+
git push
106+
```
107+
108+
5. Create a **signed** tag on the release commit and give it the same tag
109+
message as the name of the tag. This tag should be the version number with a
110+
`v` prefix:
111+
112+
```bash
113+
git tag -s v0.x.y
114+
115+
# tag message should be: v0.x.y
116+
```
117+
118+
6. Push the signed tag to the origin repository:
119+
120+
```bash
121+
git push origin v0.x.y
122+
```
123+
124+
7. Pushing the tag triggers an additional GHA workflow which should create the
125+
container images in your own fork. Check that this workflow is functional. If
126+
the CI job in your fork passes, push the tag to upstream:
127+
128+
```bash
129+
git push upstream v0.x.y
130+
```
131+
132+
8. The images for the release are now being created. Go to the [Tags](https://github.com/TraceMachina/nativelink/tags)
133+
tab in GitHub and double-check that the tag has a green `Verified` marker
134+
next to it. If it does, select `Create a release from tag` and create release
135+
notes. You can use previous release notes as template by clicking on the
136+
"Edit" button on a previous release and copy-pasting the contents into the
137+
new release notes.
138+
139+
Make sure to include migration instructions for all breaking changes.
140+
141+
Explicitly list whatever changes you think are worth mentioning as `Major
142+
changes`. This is a fairly free-form section that doesn't have any explicit
143+
requirements other than being a best-effort summary of notable changes.
144+
145+
9. Once all notes are in line, click `Publish Release`.
146+
79147
## Conduct
80148

81149
NativeLink Code of Conduct is available in the

0 commit comments

Comments
 (0)