@@ -147,15 +147,18 @@ If a vote is taken, the follow rules will be followed:
147
147
148
148
## Release Process and Versioning
149
149
150
+ ### Versioning
151
+
150
152
The specifications produced will adhere to the following:
151
153
152
- - The versioning scheme used will follow [ semver] ( https://semver.org/ ) .
154
+ - The versioning scheme will follow [ semver] ( https://semver.org/ ) for the
155
+ version number part of the version string.
153
156
154
- - Specifications will be grouped into logical units and released at the same
155
- time, with the same version number. This is true regardless of whether each
156
- individual document actually changed during the release cycle. The
157
- determination of the number of groups, and which document belongs in a group,
158
- can change over time.
157
+ - Specifications will be grouped into logical units, with all documents in a
158
+ group released at the same time, with the same version number. This is true
159
+ regardless of whether each individual document actually changed during the
160
+ release cycle. The determination of the number of groups, and which document
161
+ belongs in a group, can change over time.
159
162
160
163
- Since changing the CloudEvents ` specversion ` string could have a significant
161
164
impact on implementations, all non-breaking changes will be made as
@@ -171,53 +174,63 @@ The specifications produced will adhere to the following:
171
174
place. The purpose of having a tag is to support GitHub releases, which can
172
175
act as a notification channel for interested users.
173
176
177
+ - Naming will adhere to the following pattern:
178
+ - Release Name:
` [email protected] `
179
+ - Release Candidate Tag Name:
` [email protected] #`
180
+ - Release Branch Name:
` [email protected] `
181
+ - Release Tag Name:
` [email protected] `
182
+
174
183
Note that these rules do not apply to unversioned documents, such as the
175
184
[ documented extensions] ( ../cloudevents/extensions/README.md ) .
176
185
177
- To create a new release:
186
+ ### Creating A New Release
178
187
179
188
- Periodically the group will examine the list of extensions to determine
180
189
if any action should be taken (e.g. removed due to it being stale). The
181
190
creation of a new release will be the reminder to do this check. If any
182
191
changes are needed then PRs will be created and reviewed by the group.
183
192
184
193
- Determine the new release version string. It should be of the form:
185
- ` <subject>/vX.Y.Z ` , e.g. ` cloudevents/v1.0.4 ` or ` subscriptions/v1.0.0 ` .
186
-
187
- - Create a PR (for the "main" branch") that:
188
- - Modifies the repo's files to use the new version string appended with
189
- ` -rc# ` as appropriate. Make sure to remove all ` -wip ` suffixes as needed.
194
+
195
+
196
+ - Before a new release is finalized, a "release candidate" (rc) should be
197
+ created that identifies the versions of files in the repository that are to
198
+ be reviewed. The process for a RC is as follows:
199
+ - Create a PR (for the "main" branch") that modifies the appropriate files
200
+ to use the new version string appended with ` -rc# ` . Make sure to remove
201
+ all ` -wip ` suffixes as needed.
202
+ - Review and merge the PR. Note that this review is not really meant for
203
+ checking the functionality of the specs, rather is it intended to verify
204
+ the version string renaming was done properly.
205
+ - Create a Github tag pointing to the commit on the "main" branch after the
206
+ PR is merged, using the release version string suffixed with ` -rc# ` .
207
+ - Initiate a final review/test of the release, pointing reviwers to the tag.
208
+
209
+ - When review/testing is completed, update all of the version string references
210
+ to no longer use the ` -rc# ` suffix:
211
+ - Create a PR with the following changes:
212
+ - Modify the repo's files to use the new version string (without ` -rc# ` )
213
+ as appropriate..
214
+ - Update [ RELEASES.md] ( RELEASES.md ) to mention the new release, and
215
+ reference the yet-to-be-created release tag.
216
+ - Update the appropriate ` */RELEASE_NOTES.md ` file with the changes
217
+ for the release. The list can be generated via:
218
+ ` git log --pretty=format:%s [email protected] | grep -v "Merge pull" `
219
+ by replacing "
[email protected] " with the name of the previous release.
220
+ Or, use GitHub's
221
+ [ new release] ( https://github.com/cloudevents/spec/releases/new ) process
222
+ to generate the list without actually creating the release yet.
190
223
- Merge the PR.
191
- - Initiate a final review/test of the release.
192
-
193
- - Create A "release candidate" with the new release version string but with a
194
- suffix of ` -rc# ` (release candidate). This will indicate that the authors
195
- believe it is ready for final review/testing. This will be true for updates
196
- to existing specifications and for new specifications.
197
-
198
- - When review/testing is completed, create a PR (for the "main" branch") that:
199
- - Modifies the repo's files to use the new version string (without ` -rc# ` )
200
- as appropriate..
201
- - Update [ RELEASES.md] ( RELEASES.md ) to mention the new release, and
202
- reference the yet-to-be-created release tag.
203
- - Update the appropriate ` */RELEASE_NOTES.md ` file with the changes
204
- for the release. The list can be generated via:
205
- ` git log --pretty=format:%s main...cloudevents/v1.0.3 | grep -v "Merge pull" `
206
- by replacing "cloudevents/v1.0.3" with the name of the previous release.
207
- Or, use GitHub's
208
- [ new release] ( https://github.com/cloudevents/spec/releases/new ) process
209
- to generate the list without actually creating the release yet.
210
-
211
- - Merge the PR.
212
- - Note that the link checker should fail since any references to the new
213
- release tag will not be valid yet. This is expected.
214
-
215
- - Create a new branch with the same name as the new release version string
216
- appended with ` -branch ` (e.g. ` <subject>/vX.Y.Z-branch ` ).
224
+ - Note that the link checker should fail since any references to the new
225
+ release tag will not be valid yet. This is expected.
226
+
227
+ - Create the Github release and tag for the new release:
217
228
- Use GitHub to create a
218
229
[ new release] ( https://github.com/cloudevents/spec/releases/new ) .
219
- During that process, create a new tag with the new release version
220
- string (e.g. ` <subject>/vX.Y.Z ` ) without any suffix.
230
+ During that process, create a new tag with the new release version string
231
+ in the format
` [email protected] ` .
232
+ - Create a new branch with the new release version string in the format
233
+
221
234
- Rerun the GitHub CI actions from the previous PR and the "main" branch as
222
235
they should all pass now; as a sanity check.
223
236
@@ -234,10 +247,10 @@ To create a new release:
234
247
of that branch. We'll eventually setup a GitHub action to automatically do
235
248
it but for now you can do it via the CLI:
236
249
- ` git pull --tags ` to make sure you have all latest branches and tags
237
- - ` git tag -d <subject>/ vX.Y.Z ` to delete the old tag for the release
238
- - ` git tag <subject>/ vX.Y.Z <subject>/ vX.Y.Z-branch ` to create a new tag for
250
+ - ` git tag -d SUBJECT@ vX.Y.Z ` to delete the old tag for the release
251
+ - ` git tag SUBJECT@ vX.Y.Z SUBJECT@ vX.Y.Z-branch ` to create a new tag for
239
252
the head of the release branch
240
- - ` git push REMOTE <subject>/ vX.Y.Z -f ` to force the tag to updated in the
253
+ - ` git push REMOTE SUBJECT@ vX.Y.Z -f ` to force the tag to updated in the
241
254
GitHub repo, where ` REMOTE ` is replaced with the git "remote" name that
242
255
you have defined that references the GitHub repo
243
256
0 commit comments