Skip to content
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

Add generic release checklist for other projects #20

Closed
wants to merge 2 commits into from

Conversation

travier
Copy link
Member

@travier travier commented Jul 27, 2022

Add generic release checklist for other projects

Checklist for projects that are not compiled code or that don't need
additional steps beyond the basics.


config: Add console-login-helper-messages

Use the generic template.

@travier travier force-pushed the generic branch 2 times, most recently from a163e2a to f871980 Compare July 27, 2022 15:24
@travier
Copy link
Member Author

travier commented Jul 27, 2022

Looks like we need a fork in https://github.com/coreosbot-releng for CLHM

@bgilbert
Copy link
Contributor

Looks like we need a fork in https://github.com/coreosbot-releng for CLHM

No, the fork will be created automatically.

@travier travier force-pushed the generic branch 2 times, most recently from 7b3840e to 351c1e9 Compare July 29, 2022 14:35
travier added 2 commits July 29, 2022 17:06
Checklist for projects that are not compiled code or that don't need
additional steps beyond the basics.
@travier
Copy link
Member Author

travier commented Jul 29, 2022

I've rewritten the procedure to use a manual tag + PR workflow analog to other ones but sufficiently different that for now I'd say we should keep copies to make things simpler.

Copy link
Contributor

@bgilbert bgilbert left a comment

Choose a reason for hiding this comment

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

Half of this checklist thinks it's PRing a change to a release notes doc, and half thinks it's just creating a tag message. I'm not 100% sure which one you intended.

@@ -73,8 +73,16 @@ repos:
crate: zincati
fedora_package: rust-zincati

console-login-helper-messages:
Copy link
Contributor

Choose a reason for hiding this comment

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

Let's keep both lists in alphabetical order.

- [ ] `git clean -fd`
- [ ] `RELEASE_VER=x.y.z`
- [ ] `PREVIOUS_RELEASE_VER=x.y.z-1`
- [ ] `UPSTREAM_REMOTE=origin`
Copy link
Contributor

Choose a reason for hiding this comment

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

Should we add a git pull to make sure we've picked up any remote changes? (The other checklists don't do this either; maybe they should.)

```
git show "v${RELEASE_VER}"
git tag --verify "v${RELEASE_VER}"
```
Copy link
Contributor

Choose a reason for hiding this comment

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

I'd be in favor of adding an instruction to open a Git history viewer (I use gitk) and verify that the tag is on the expected commit. Tags can't be moved after they're pushed, so this seems worth checking.


- open and merge a PR for this release:
- [ ] `git push --tags ${UPSTREAM_REMOTE} release-${RELEASE_VER}`
- [ ] open a web browser and create a PR for the branch above
Copy link
Contributor

Choose a reason for hiding this comment

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

What are we PRing here? We've created a branch but not committed anything to it, and we've already pushed the tag so we couldn't change any commits anyway.

- [ ] write release notes in `docs/release-notes.md`. You can follow the following template:
```
cat <<EOF > release-notes.txt
This is release ${NEWTAG} of console-login-helper-messages.
Copy link
Contributor

Choose a reason for hiding this comment

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

console-login-helper-messages needs to be templated.

But also, this message is pretty verbose for its content. Is this what we want?


Thanks to the following contributors for patches during this release:

$(git shortlog --no-merges --pretty=format:"%h %s" -e ${PREVIOUS_RELEASE_VER}..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 don't think we should do this. Two reasons:

  • ${PREVIOUS_RELEASE_VER} has to be looked up manually, which is a potential source of errors.
  • Git logs are developer-facing; changelogs are user-facing. If developers want to know what changed, they can look at Git anyway. Users shouldn't be handed a Git shortlog and told to figure it out themselves. (For an example of how this fails, check out older Afterburn releases.)

Potential alternatives:

  • Don't bother with a changelog.
  • Open an issue with the changelog text, collect LGTMs, close issue, paste into tag message and GitHub release.
  • Maintain a CHANGELOG.md or docs/release-notes.md and use a proper PR flow. docs/ probably doesn't make sense for projects that don't have a GitHub Pages site.

@travier
Copy link
Member Author

travier commented Aug 1, 2022

Half of this checklist thinks it's PRing a change to a release notes doc, and half thinks it's just creating a tag message. I'm not 100% sure which one you intended.

I think we should do both but I'm not sure how well it would works out in practice:

  • Create a PR with release notes & tag this commit.
  • Have the PR merged and the notes published.

But maybe that's too cumbersome as we need to re-update the tag every time we address review comments.

@bgilbert
Copy link
Contributor

bgilbert commented Aug 3, 2022

If we want to include release notes in the repo itself, we shouldn't create the tag until after the PR merges. Stale tags are dangerous: they could be pushed accidentally, at which point they're immutable.

(And in that case, I'd favor leaving the release notes out of the tag message, for simplicity. That's what we do everywhere else.)

@cgwalters
Copy link
Member

Just my 2c: I love the idea of a changelog.md but isn't it going to be a conflict-fest? I see discussion related to this in PrefectHQ/prefect#2311

Git logs are developer-facing; changelogs are user-facing.

The distinction between these two shrinks significantly (imo to nearly nil) for projects where all users are developers - i.e. libraries such as https://github.com/coreos/cap-std-ext/

@bgilbert
Copy link
Contributor

bgilbert commented Aug 3, 2022

Just my 2c: I love the idea of a changelog.md but isn't it going to be a conflict-fest?

Unknown, but I suspect not. Our rate of change in upstream projects isn't that high, and I suspect that's especially true in projects that will use this particular checklist. In Afterburn/Butane/coreos-installer/Ignition we've started updating the changelog in each PR and it's seemed okay so far.

And also, IMO changelogs should be sorted in order of significance, not in chronological order, which helps cut down on conflicts.

Git logs are developer-facing; changelogs are user-facing.

The distinction between these two shrinks significantly (imo to nearly nil) for projects where all users are developers

I don't agree. Developers using an API need to know about breaking changes, new features, and bug fixes, the same as in user-facing projects. They shouldn't need to sort through random refactor commits, dependency updates, and CI improvements to figure out which changes will affect them.

@cgwalters
Copy link
Member

I don't agree. Developers using an API need to know about breaking changes, new features, and bug fixes, the same as in user-facing projects. They shouldn't need to sort through random refactor commits, dependency updates, and CI improvements to figure out which changes will affect them.

Yeah the common pattern for that is to tag the commits feat/ vs chore/ ci/ etc. and have tooling organize them when generating e.g. the github release into a summary.

@bgilbert
Copy link
Contributor

bgilbert commented Aug 3, 2022

To be clear, though, filtering isn't enough. A single semantic change might be spread across many commits, and their commit logs will have been written to be useful to developers of the project, not to outside users. I've been writing release notes for a long time, and I don't think there's any automated substitute for the perspective shift needed when explaining code changes to the userbase.

@bgilbert
Copy link
Contributor

bgilbert commented Aug 3, 2022

I love the idea of a changelog.md but isn't it going to be a conflict-fest?

Also, this checklist wouldn't necessarily require the changelog to be updated in each PR. It could be written entirely at release time.

@travier travier closed this May 13, 2024
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.

3 participants