-
-
Notifications
You must be signed in to change notification settings - Fork 636
Update the documented release process #2277
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
Conversation
These updates are to "match reality". I considered leaving some of the surrounding text (e.g., "Do not hesitate to ask questions...") alone, but judged that our current maintenance culture makes such text unnecessary.
CONTRIBUTING.md
Outdated
|
|
||
| Do not hesitate to ask questions if you have any before performing a release. | ||
| - Pull the latest changes to `main` locally. | ||
| - Create an unsigned tag with the release version number prefixed with a `v`, _e.g., `git tag v3.4.0`_, and push. |
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.
Better make it annotated
| - Create an unsigned tag with the release version number prefixed with a `v`, _e.g., `git tag v3.4.0`_, and push. | |
| - Create an unsigned tag with the release version number prefixed with a `v`, _e.g., `git tag -a v3.4.0`_, and push it to the upstream repository. |
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.
To make it an annotated tag we need a message. So... git tag -a v3.4.0 -m 'v3.4.0'?
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.
Ah, right. Yes.
Also, might be a good idea to have an explicit reference git tag -a v3.4.0 -m v3.4.0 upstream/main (post git fetch upstream or git fetch --all).
Just remembered how we tried to include Git instructions in attrs (python-attrs/attrs#1105 / python-attrs/attrs#1123). But that ended up being removed (python-attrs/attrs@52dfaf0).
So maybe this is overkill.
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 it's a balance we need to strike. Unless we're actually trying to script it out into a runbook of some kind, we should leave some gaps to let the process fit the release engineer's environment.
For now, I've written it out as git tag -a v3.4.0 -m v3.4.0, and I think that's good -- adapting that command as needed and pushing that tag is left to the release engineer's discretion. I also like that we're showing steps with a specific (bogus) release version, rather than git tag -a "v$VERSION" -m "v$VERSION" or stuff like that.
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.
Yeah, that's fair. I hope that #2274 will eventually bring us closer to a single-button process.
CONTRIBUTING.md
Outdated
| - Create an unsigned tag with the release version number prefixed with a `v`, _e.g., `git tag v3.4.0`_, and push. | ||
| - Create a GitHub Release, populated with a copy of the changelog. Some of the markdown will need to be reformatted into GFM. | ||
| The release title and tag should be the newly created tag. | ||
| - A GitHub Workflow will trigger off of the release to publish to PyPI. A member of `pip-tools-leads` must approve the publication step. |
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.
Maybe link the workflow runs page and the team?
| - A GitHub Workflow will trigger off of the release to publish to PyPI. A member of `pip-tools-leads` must approve the publication step. | |
| - A [GitHub Workflow] will trigger off of the release to publish to PyPI. A member of [`pip-tools-leads` team] must approve the publication step. |
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 happy to link the workflow runs page. Is the team publicly visible? Or visible to everyone in the org?
(It's not viewable unauthenticated, and I don't have a second github account handy to check on this)
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 teams are visible to all GH org members.
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 teams are visible to all GH org members.
CONTRIBUTING.md
Outdated
| Please be mindful of other before and when performing a release, and use this access responsibly. | ||
|
|
||
| Do not hesitate to ask questions if you have any before performing a release. | ||
| - Pull the latest changes to `main` locally. |
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.
Technically, this does require pulling but just fetching.
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.
True. IMO, the workflow which is likely to be familiar to people is git checkout main; git pull.
How about "Fetch the latest changes to main locally."? Since there's no command given in the doc, I think that leaves me free to checkout+pull (which is what I typically do).
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.
FWIW, kids these days would do git switch. Also, pulling includes merge, which might create a merge commit. At least add --ff.
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 have pull.ff = only in my git config! 😁
I should probably start trying git switch though.
In any case, I updated to the Fetch the latest changes wording. LMK if you feel like it's good this way or should be further refined.
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 have
pull.ff = onlyin my git config! 😁
I should probably start trying
git switchthough.
I've been trying to start but it's difficult to change habits. omz gives me aliases and I'm so used to gco / gcb. And now I'm trying to remember that it's gsw / gswc..
The wording seems good.
CONTRIBUTING.md
Outdated
| - Update the [CHANGELOG] with the version, date and add the text from [drafter release](https://github.com/jazzband/pip-tools/releases). | ||
| - Create a branch for the release. _e.g., `release-3.4.0`_. | ||
| - Use `towncrier` to update the [CHANGELOG], _e.g., `towncrier build --version v3.4.0`_. | ||
| - Push the branch to your fork and create a pull request. |
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.
Since this is talking about both upstream and fork. It's probably worth defining the assumed git remote names at the beginning of the document. Might be origin and fork, or upstream and origin.
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 prefer upstream+origin mildly -- it's what I use, and I'm one of the primary consumers of this doc. I'll add a line for it.
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.
We have upstream + origin in ansible/ansible, I think. But I tend to use fork. Still, I know how to adapt so it doesn't matter.
CONTRIBUTING.md
Outdated
|
|
||
| Jazzband aims to give full access to all members, including performing releases, as described in the | ||
| [Jazzband Releases documentation](https://jazzband.co/about/releases). | ||
| Releases require approval by a member of the `pip-tools-leads` team. |
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.
| Releases require approval by a member of the `pip-tools-leads` team. | |
| Releases require approval by a member of the [`pip-tools-leads` team]. |
15154fc to
524edd3
Compare
webknjaz
left a comment
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.
Can we link the release workflow specifically?
|
Sure! I wasn't sure whether or not we wanted to be that specific about it. New revision with that + the team link coming momentarily. |
CONTRIBUTING.md
Outdated
| - Create a GitHub Release, populated with a copy of the changelog. | ||
| Some of the markdown will need to be reformatted into GFM. | ||
| The release title and tag should be the newly created tag. |
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.
Now that we have the Announcements category in Discussions, the GH Release creation should always create a discussion — there's a checkbox for it with a drop-down for the category. This must be done at the time of the initial GH Release creation — once created, it's impossible to link a discussion to an existing release entry.
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.
For right now I'll just add a text note about this, but this also motivates me to do a second pass over this doc and introduce gh CLI commands in the future.
Having a command handy for gh release create --discussion-category Announcements ... would probably prevent mistakes.
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.
Yep. In fact, I was looking at the pytest release automation (actually fixing something when publishing v9.0.1 broke), I realized that it can now be triggered by gh commands. And I realized that it's possible to have GH CLI extensions that are invocable as subcommands. It might be interesting to explore a gh release-pip-tools one day. Not sure yet.
Also, avoid very long lines by inserting more semantic breaks into the new release documentation. Co-authored-by: 🇺🇦 Sviatoslav Sydorenko (Святослав Сидоренко) <[email protected]>
5fb37bd to
62ab395
Compare
|
I did a rebase to squash together all of the recent changes, just to clarify in case the diff looks odd at all. |
These updates are to "match reality". I considered leaving some of the surrounding text (e.g., "Do not hesitate to ask questions...") alone, but judged that our current maintenance culture makes such text unnecessary.
This PR should resolve this comment.
I decided not to add a contrib changelog note for this one. In this particular case it's purely doc and only relevant to the maintainers who do releases.
Contributor checklist
Included tests for the changes.changelog.d/(seechangelog.d/README.mdfor instructions) or the PR text says "no changelog needed".Maintainer checklist
bot:chronographer:skiplabel.Assign the PR to an existing or new milestone for the target version (following Semantic Versioning).