Automating point releases #4541
Replies: 3 comments 5 replies
-
Releasing from
|
Beta Was this translation helpful? Give feedback.
-
Changelog entriesAssuming that we want
This would mean the final git tag is "clean" in that when checking out the released tag, there is no notion of anything being "unreleased" in the changelog.
This leaves the git tag in a kind of dirty state. Plus, there might be a divergence between when this PR gets opened and merged. We'd have to be careful that no PR in-between adds an entry to the unreleased section.
This is essentially what we are doing now but has the same problem as (2). There can be a divergence between when that PR gets opened and when it gets merged (which would then trigger the release?). Worse than (2), this might allow features to slip into a release that were not intended to be released yet. (2) and (3) have some kind of coordination cost which I'd like to avoid as much as possible. Thus, I think it makes the most sense if we push for (1). (1) has the downside that it is not clear whether the top-most version in the changelog is an unreleased version or not. The same applies to the crate's version. There are two problems / possible errors we need to solve: a. Detecting that the crate needs a version bump: This should be fairly easy as a CI check by checking if a PR contains and code change within a certain directory and diffing the crate version against what is on crates.io. (b) is not super important but would be good to deal with somehow. Perhaps, to get a solution off the ground, we could ignore that for now and spot-check it manually in PRs? If we have the above CI check regarding a crate-version bump, then we could probably tie it to that? If that CI check fails, it means we need to add a new entry. If that CI check passes, the existing top-entry can be modified. |
Beta Was this translation helpful? Give feedback.
-
Dealing with breaking changesOnce our master is "dirty", we should definitely prohibit a scheduled release. This should be rather easy by adding a check to the triggered release job that all about to be done releases are only point releases and it abort otherwise. |
Beta Was this translation helpful? Give feedback.
-
I am transferring some ideas from #2902 over to this discussion because I am hoping that we can get some more structure into it as a result. Plus, many things changed since we started that thread so it is time to consolidate that knowledge into a new place.
Overall, I think it is really important that we minimize breaking changes as much as possible. I think we've been doing a good job on that front and we should continue that way. By postponing breaking changes, we've effectively cut many more point releases, delivering features to our users earlier that previously.
I think this is a good direction and I'd like to propose that - as a next step - we automate those releases, with the end goal that they happen in a fully automated way every week or so.
There are a number of problems to solve and I am going to create a separate thread for each of them below here.
Beta Was this translation helpful? Give feedback.
All reactions