Skip to content

Conversation

duglin
Copy link
Collaborator

@duglin duglin commented Jul 23, 2025

create a new branch for each release instead of a tag/github-release

@duglin
Copy link
Collaborator Author

duglin commented Jul 23, 2025

ping @jskeet

- create a new branch for each release instead of a tag/github-release

Signed-off-by: Doug Davis <[email protected]>
@duglin
Copy link
Collaborator Author

duglin commented Jul 30, 2025

ping @jskeet I updated the process - see what you think

Copy link
Contributor

@jskeet jskeet left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As mentioned, I think "here's what we're trying to do" and "here's how to achieve it as a list of steps" should be separate, and we should talk about whether we need different branch and tag names. Happy with the overall approach though.

Git branches will be used as a way to snapshot/tag releases. While we hope
to not push new commits to these branches, in practice, it is possible that
changes to a release might be needed without "picking up" other changes that
might have been commited to "main". Creating the branch during the release
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
might have been commited to "main". Creating the branch during the release
might have been committed to "main". Creating the branch during the release

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

delete para

to not push new commits to these branches, in practice, it is possible that
changes to a release might be needed without "picking up" other changes that
might have been commited to "main". Creating the branch during the release
process will makes this easier to manage should the need should arise.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
process will makes this easier to manage should the need should arise.
process makes this easier to manage should the need should arise.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

delete para

- Merge the PR.
- Initiate a final review/test of the release.

- A "release candidate" tag will be created with the new release version
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought we weren't going to use tags at all, on the grounds that we'd need to keep the tag up-to-date with the branch?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think using tags for RC makes since so that people can have a stable version of the repo to look at. I guess we could just tell people to always look at the latest stuff on "main" if you don't see value in it. I envision this RC tag only being useful during the review cycle. We could even delete it when done if we want to clean things up.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another alternative would be to create the branch at the point of release candidacy (but not the tag) and refer people to the branch? That would allow "things for past that version" to happen on main (good) but mean duplication of changes for that version (bad).

The original comment was left over from my first 5 minutes of review, where I hadn't got to grips with the idea of "we'll use both". I'm okay to go with a tag for RCs - just thought I'd mention the branch alternative for discussion.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yea, I'm not thrilled with the idea of dual maintenance once an RC is created. If the RC lives for a long time that's just going to be annoying. If you think having an RC tag is bad, or confusing, then I'm ok with just telling people to look at the tip of "main" for their review.

Make sure to remove `-wip` from all of the version strings.

- For the most part we try to only use a single branch ("main") for our work.
Git branches will be used as a way to snapshot/tag releases. While we hope
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suggest we separate "the process" from "the motivation/reasoning".

I think it's worth calling out something like: "Each full (non-RC) release will have both a tag and a branch. The tag will be kept up-to-date with the tip of the branch. The purpose of having a branch is to support very minor fixes (typos, clarifications) which amend a release in place. The purpose of having a tag is to support GitHub releases, which can act as a notification channel for interested users."

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copied your proposed text into the previous section - and deleted this paragraph

- Update the appropriate `*/RELEASE_NOTES.md` file with the changes
for the release. The list can be generated via:
`git log --pretty=format:%s main...v0.1 | grep -v "Merge pull"`
by replacing "v0.1" with the name of the previous release. Or, use github's
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably best to give a fuller example, e.g. cloudevents/v1.0.4 here.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

- `git tag -d vX.Y.Z` to delete the old tag for the release
- `git tag vX.Y.Z vX.Y.Z-branch` to create a new tag for the HEAD of the
release branch
- `git push REMOTE vX.Y.Z -f` to force the tag to updated in the github repo
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- `git push REMOTE vX.Y.Z -f` to force the tag to updated in the github repo
- `git push REMOTE vX.Y.Z -f` to force the tag to updated in the GitHub repo

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done


- If an update to a release is needed, create a PR for the appropriate
branches (including "main"), and merge when ready. For any release that's
updated, you'll need to move the tag for that release to point to the HEAD
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think when referring to it normally, this should be head (or tip) rather than HEAD. I think HEAD is just the committish you can use in git commands.

Suggested change
updated, you'll need to move the tag for that release to point to the HEAD
updated, you'll need to move the tag for that release to point to the head

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

it but for now you can do it via the CLI:
- `git pull` to make sure you have all latest branches and tags
- `git tag -d vX.Y.Z` to delete the old tag for the release
- `git tag vX.Y.Z vX.Y.Z-branch` to create a new tag for the HEAD of the
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- `git tag vX.Y.Z vX.Y.Z-branch` to create a new tag for the HEAD of the
- `git tag <subject>/vX.Y.Z <subject>/vX.Y.Z-branch` to create a new tag for the head of the

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

of that branch. We'll eventually setup a Github action to automatically do
it but for now you can do it via the CLI:
- `git pull` to make sure you have all latest branches and tags
- `git tag -d vX.Y.Z` to delete the old tag for the release
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- `git tag -d vX.Y.Z` to delete the old tag for the release
- `git tag -d <subject>/vX.Y.Z` to delete the old tag for the release

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

updated, you'll need to move the tag for that release to point to the HEAD
of that branch. We'll eventually setup a Github action to automatically do
it but for now you can do it via the CLI:
- `git pull` to make sure you have all latest branches and tags
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- `git pull` to make sure you have all latest branches and tags
- `git pull --tags` to make sure you have all latest branches and tags

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

Signed-off-by: Doug Davis <[email protected]>
Copy link
Contributor

@jskeet jskeet left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking at the list of steps, I wonder whether these might actually be better as subsections with subheadings:

  • Creating a release candidate
  • Creating a final release
  • Updating a release

... each with a list of steps. I'm happy to give that a go after this has gone in.

A few suggestions, but I'm basically happy... and again, I could potentially apply those suggestions in a follow-up PR.

allow for broader testing before it promoted to its final version number.
This will be true for updates to existing specifications and for new
specifications.
- The versioning scheme used will follow [semver](https://semver.org/).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not blocking for this PR, but we could probably change all of this into the present tense now.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

got this one

Comment on lines 154 to 155
- Specifications will be grouped into logical units and released at the same
time, with the same version number. This is true regardless of whether each
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Specifications will be grouped into logical units and released at the same
time, with the same version number. This is true regardless of whether each
- Specifications will be grouped into logical units, with all documents in a group released at the same
time, with the same version number. This is true regardless of whether each

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

- Merge the PR.
- Initiate a final review/test of the release.

- Create A "release candidate" with the new release version string but with a
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Create A "release candidate" with the new release version string but with a
- Create a "release candidate" with the new release version string but with a

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

- Merge the PR.
- Initiate a final review/test of the release.

- Create A "release candidate" with the new release version string but with a
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's not clear what "create a release candidate" actually means. What's the concrete step here? Should the "Create a PR" step above actually be a sub-bullet of this one?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm reworking this section a bit and I think it'll address your concerns

- Use GitHub to create a
[new release](https://github.com/cloudevents/spec/releases/new).
During that process, create a new tag with the new release version
string (e.g. `<subject>/vX.Y.Z`) without any suffix.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
string (e.g. `<subject>/vX.Y.Z`) without any suffix.
string in the format `<subject>/vX.Y.Z` without any suffix.

(Or keep it parenthesized but remove the e.g., as it's not really an example.)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

went with:

string in the format [email protected].

@duglin
Copy link
Collaborator Author

duglin commented Aug 14, 2025

@jskeet I think I got all of your suggestions. Any chance of one final review before I merge?

@jskeet
Copy link
Contributor

jskeet commented Aug 14, 2025

@jskeet I think I got all of your suggestions. Any chance of one final review before I merge?

Will have a look through it tomorrow morning UK time.

Copy link
Contributor

@jskeet jskeet left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One tiny typo, but other than that I think we're good to go - thanks for being patient :)

- Before a new release is finalized, a "release candidate" (rc) should be
created that identifies the versions of files in the repository that are to
be reviewed. The process for a RC is as follows:
- Create a PR (for the "main" branch") that modifies the appropriate files
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Create a PR (for the "main" branch") that modifies the appropriate files
- Create a PR (for the "main" branch) that modifies the appropriate files

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Got it.
Thanks for the review and time!

Signed-off-by: Doug Davis <[email protected]>
@duglin
Copy link
Collaborator Author

duglin commented Aug 15, 2025

Agreed on last week's call - merging!

@duglin duglin merged commit 4ad3223 into cloudevents:main Aug 15, 2025
2 checks passed
@duglin duglin deleted the releases branch August 15, 2025 14:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants