use a release train to automate mainline releases :train:

Timeline

sudoforge opened

a release train is an approach to release management in which a release is created automatically by a pipeline at a predetermined interval (e.g. weekly). by automating releases in this way, we remove the overhead of thinking about releases, and in addition to that, gain the following benefits:

the pipeline can automatically manage the changelog

this is otherwise difficult to integrate in an automated manner because of the chicken-and-egg problem with wanting the tag to be assigned to the commit that updates the changelog for the release: it would require manual intervention.

best case without a release train: a pipeline that is manually triggered, wherein the pipeline creates a commit updating the changelog, pushes that to the remote, tags it, pushes the tag, and runs the release generation workflow

worst case without a release train: there is no way to have the pipeline manage the changelog. a human user would need to bump the changelog, create a change request, merge it in, fetch the remote locally, create a tag, and push that up (at which point a pipeline could run to create the assets and release). this is roughly what we do today.