New release
Hi,
Last release (2.3.0) was 2 years ago, and now that we upgraded to nlohmann_json 3.12, I think it would be nice to release a new version. It seems that there is no API breaking changes since 2.3.0; so I guess the new version should be 2.4.0. I can cut a release if nobody else can do it, but I don't know the release process (should it be a PR? a commit directly on main with only the version number updated?)
There was no real release process.
What I did in the past was integrating MR which I could oversee and which didn't break the regression tests.
If that was OK, I pushed a tag to main directly.
But this was before there were package-creation CI jobs.
The common workflow is to make a PR to consolidate and refine the changelog. There doesn't seem to be one in this project, but not opposed to adding one either manually or via towncrier or equivalent, and I can share some tips that I have gathered about these. Because of this, just tagging and publishing a release is good enough.
Yeah, that's actually one principle we should follow: a pushed tag + CI-jobs should generate the release-files and the packages - nothing should be done manually (I'm getting old, and this is where I'm coming from - CI-formalisation is so much better).
If there aren't any special release CI-jobs, than at the tag will make githab create the source-package and the links on the site.
We can use https://github.com/elgohr/Github-Release-Action to generate the Github releases with changelog when a tag is pushed. This still requires to push a tag manually. We can fully automatize that with a Github App that will run the workflow, but that requires some configuration at the org / user account level. That can be done later though.
EDIT: there we go
I cannot find my original reference, so hope this comment is helpful enough to describe the workflow. Basically it creates and rebases a release PR where the changelog is compiled. My inspiration for that was somewhere in executablebooks but I can't find it now.
Otherwise for just creating releases from tags I recommend something dead simple: https://github.com/spglib/spglib/blob/develop/.github/workflows/release.yaml it is an extendable workflow, but for this project it can be reduced to just the last job.
What do you think of running a script from the Github history and sorting entries by "topic" (new feature, bug fix, maintenance) that we can enforce with PR labels? I find it simpler for the contributors than asking them to add a new file for each entry in the changelog.
That is basically .github/release.yaml workflow, perfectly fine workflow IMO. The things you would have to note is that the PR title is used for the entries so make sure you sanitize them as needed.
As for having them in a changelog, that can be done when the release is cut. There is some gh cli to do this, but it's been a while since I last looked into it.