@@ -147,15 +147,18 @@ If a vote is taken, the follow rules will be followed:
147147
148148## Release Process and Versioning
149149
150+ ### Versioning
151+
150152The specifications produced will adhere to the following:
151153
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.
153156
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.
159162
160163- Since changing the CloudEvents ` specversion ` string could have a significant
161164 impact on implementations, all non-breaking changes will be made as
@@ -171,53 +174,63 @@ The specifications produced will adhere to the following:
171174 place. The purpose of having a tag is to support GitHub releases, which can
172175 act as a notification channel for interested users.
173176
177+ - Naming will adhere to the following pattern:
178+ - Release Name: ` SUBJECT@vX.Y.Z `
179+ - Release Candidate Tag Name: ` SUBJECT@vX.Y.Z-rc# `
180+ - Release Branch Name: ` SUBJECT@vX.Y.Z-branch `
181+ - Release Tag Name: ` SUBJECT@vX.Y.Z `
182+
174183Note that these rules do not apply to unversioned documents, such as the
175184[ documented extensions] ( ../cloudevents/extensions/README.md ) .
176185
177- To create a new release:
186+ ### Creating A New Release
178187
179188- Periodically the group will examine the list of extensions to determine
180189 if any action should be taken (e.g. removed due to it being stale). The
181190 creation of a new release will be the reminder to do this check. If any
182191 changes are needed then PRs will be created and reviewed by the group.
183192
184193- 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+ ` SUBJECT@vX.Y.Z ` , e.g. ` cloudevents@v1.0.4 ` or ` subscriptions@v1.0.0 ` .
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 main...cloudevents@v1.0.3 | grep -v "Merge pull" `
219+ by replacing "cloudevents@v1.0.3" 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.
190223 - 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:
217228 - Use GitHub to create a
218229 [ 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 ` SUBJECT@vX.Y.Z ` .
232+ - Create a new branch with the new release version string in the format
233+ ` SUBJECT@vX.Y.Z-branch ` .
221234 - Rerun the GitHub CI actions from the previous PR and the "main" branch as
222235 they should all pass now; as a sanity check.
223236
@@ -234,10 +247,10 @@ To create a new release:
234247 of that branch. We'll eventually setup a GitHub action to automatically do
235248 it but for now you can do it via the CLI:
236249 - ` 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
239252 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
241254 GitHub repo, where ` REMOTE ` is replaced with the git "remote" name that
242255 you have defined that references the GitHub repo
243256
0 commit comments