pybamm-team / PyBaMM

Fast and flexible physics-based battery models in Python
https://www.pybamm.org/
BSD 3-Clause "New" or "Revised" License
1.08k stars 533 forks source link

Possible upgrades to the release infrastructure #4216

Open Saransh-cpp opened 3 months ago

Saransh-cpp commented 3 months ago

cc: @kratman @agriyakhetarpal @arjxn-py

valentinsulzer commented 3 months ago

My understanding was that having a separate release branch allows us to keep working on develop between release candidates, and also cherry pick and release critical patches if required without having to wait until the next release

agriyakhetarpal commented 3 months ago

My understanding was that having a separate release branch allows us to keep working on develop between release candidates, and also cherry pick and release critical patches if required without having to wait until the next release

Makes sense, Saransh had the same thoughts as well – removed off the list

agriyakhetarpal commented 3 months ago

Would it be better if we were to ask maintainers to submit PRs that don't target the develop branch after a release candidate has been published? For example, this would unblock big changes like #4205 because critical patches would target the release branch instead

kratman commented 3 months ago

Would it be better if we were to ask maintainers to submit PRs that don't target the develop branch after a release candidate has been published? For example, this would unblock big changes like #4205 because critical patches would target the release branch instead

I think this was the idea of not using a release branch. The only thing going to main was the release, so PRs could be made there with the cherry picks for the RCs. It makes tagging easier and simplifies the workflow to only use main. Changes on main don't impact develop so it does not block PRs.

We really don't have a solution for things like #4205 being blocked while we are cherry picking changes for releases. The solution is really to speed up the release process into a single day instead of doing multiple RCs over a months time. Cherry picking releases is only easy when PRs are squashed and the changes only touch a couple files

kratman commented 2 months ago

Other improvements:

Saransh-cpp commented 2 months ago

Since the "Require branches to be up-to-date" setting forces merges all of develop into the release branch before it is merged into develop

We should really not have this as a forced thing.

Not merging the development branch into the release branch is a very standard practice (and the only practice I have seen). Copying my comment here -

The idea of the release branch is to keep the code frozen till the final release is made. The release is only made once the tests pass on the frozen branch and if the tests are failing, then the fixes are cherry-picked instead of merging develop to update the branch. Involving multiple branches will complicate the process imo, making it much more confusing. In any case, develop should never be merged in the release branches, that is the standard practice for rc releases and even backporting fixes to a stable LTS version (if pybamm had one).

Also, backport branches are always kept frozen without updates from the development branch. Only required fixes are moved to this branch.