heroku / languages-github-actions

GitHub Actions and reusable workflow used by the Languages Team
4 stars 2 forks source link

Better support for change groups in our Keep a Changelog parser & writer #153

Open colincasey opened 1 year ago

colincasey commented 1 year ago

Our representation of the Keep a Changelog format is compliant with the following Guiding Principles from the spec:

As noted above, we currently do not parse or validate the "change groups" listed in the spec:

Instead, the content between version entries is simply treated as literal text. This is because we have existing changelogs that aren't in compliance with the spec. For example:

We also automatically add an default - No Changes. entry when a version is bumped as part of our fixed versioning strategy and there are no notable changes from the last version. This does not have an easy representation in the spec.

Questions to discuss:

colincasey commented 1 year ago

For "No Changes" I wonder if we should follow similar guidance for yanked releases given in the FAQ:

Yanked releases are versions that had to be pulled because of a serious bug or security issue. Often these versions don't even appear in change logs. They should. This is how you should display them:

## [0.0.5] - 2014-12-13 [YANKED]

The [YANKED] tag is loud for a reason. It's important for people to notice it. Since it's surrounded by brackets it's also easier to parse programmatically.

We could do something similar for releases with no changes and use ## [0.0.5] - 2014-12-13 [NO CHANGES]. This would make it easier to enforce parsing of the version entry content since it would avoid having to deal with both changelog groups & the "No Changes" special case.

Malax commented 1 year ago

How should we deal with those existing non-compliant changelogs?

By fixing them. We have full control over them and if they are not compliant to the spec they're supposed to follow they are wrong and need fixing (regardless of the release automation). I created an issue for the JVM one: https://github.com/heroku/buildpacks-jvm/issues/595

edmorley commented 1 year ago

I've fixed Go's changelog in https://github.com/heroku/buildpacks-go/pull/172.

Malax commented 3 months ago

The JVM changelogs should now be in order as soon as https://github.com/heroku/buildpacks-jvm/pull/716 is merged. Do we have further blockers?

colincasey commented 2 months ago

Yes, but I'm not sure how many are non-compliant. So to move this issue along without breaking anyone for release automation I think we'd first need:

I've been meaning to look into those but just haven't had the time 😞

edmorley commented 2 months ago

Perhaps to avoid the overhead of another shared action and having to add it everywhere, we could start with having the prepare-release workflow run some checks and output warnings (the kind that get shown on the checks overview)?

colincasey commented 2 months ago

Yeah, that's a reasonable alternative. As long as we can surface changelog issues without blocking releases for now. We can enable stricter enforcement later on.