-
Notifications
You must be signed in to change notification settings - Fork 597
Update release process #1356
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update release process #1356
Conversation
ping @jskeet |
- create a new branch for each release instead of a tag/github-release Signed-off-by: Doug Davis <[email protected]>
ping @jskeet I updated the process - see what you think |
There was a problem hiding this 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.
docs/GOVERNANCE.md
Outdated
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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
might have been commited to "main". Creating the branch during the release | |
might have been committed to "main". Creating the branch during the release |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
delete para
docs/GOVERNANCE.md
Outdated
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. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
process will makes this easier to manage should the need should arise. | |
process makes this easier to manage should the need should arise. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
delete para
docs/GOVERNANCE.md
Outdated
- Merge the PR. | ||
- Initiate a final review/test of the release. | ||
|
||
- A "release candidate" tag will be created with the new release version |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
docs/GOVERNANCE.md
Outdated
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 |
There was a problem hiding this comment.
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."
There was a problem hiding this comment.
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
docs/GOVERNANCE.md
Outdated
- 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 |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
docs/GOVERNANCE.md
Outdated
- `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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- `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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
docs/GOVERNANCE.md
Outdated
|
||
- 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 |
There was a problem hiding this comment.
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.
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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
docs/GOVERNANCE.md
Outdated
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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- `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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
docs/GOVERNANCE.md
Outdated
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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- `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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
docs/GOVERNANCE.md
Outdated
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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- `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 |
There was a problem hiding this comment.
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]>
There was a problem hiding this 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.
docs/GOVERNANCE.md
Outdated
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/). |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
got this one
docs/GOVERNANCE.md
Outdated
- 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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- 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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
docs/GOVERNANCE.md
Outdated
- Merge the PR. | ||
- Initiate a final review/test of the release. | ||
|
||
- Create A "release candidate" with the new release version string but with a |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- 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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
docs/GOVERNANCE.md
Outdated
- Merge the PR. | ||
- Initiate a final review/test of the release. | ||
|
||
- Create A "release candidate" with the new release version string but with a |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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
docs/GOVERNANCE.md
Outdated
- 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. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.)
There was a problem hiding this comment.
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]
.
@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. |
There was a problem hiding this 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 :)
docs/GOVERNANCE.md
Outdated
- 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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- Create a PR (for the "main" branch") that modifies the appropriate files | |
- Create a PR (for the "main" branch) that modifies the appropriate files |
There was a problem hiding this comment.
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]>
Agreed on last week's call - merging! |
create a new branch for each release instead of a tag/github-release