@@ -76,6 +76,74 @@ suggestions invoke it directly:
76
76
vale somefile
77
77
```
78
78
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
+
79
147
## Conduct
80
148
81
149
NativeLink Code of Conduct is available in the
0 commit comments