Open trygve-lie opened 3 years ago
That looks like a good place to start. To summarise:
main/master
is the current unprefixed version.beta
will become the next version once merged into master.alpha
is to be used for breaking changes.A few open questions from my side after reading through the setup there:
next
instead of beta
? Or is it better to go with beta
so the semantic release guide is more relevant?beta
into master
? Or would a bot command be better? alpha
branch if it is a major version change? What if they don't turn out to be breaking changes?alpha
and beta
branches from master need to be automated?Did you want to stick with next instead of beta? Or is it better to go with beta so the semantic release guide is more relevant?
The work we've done with next have been a bit simpler than using beta
and alpha
as a tool to split breaking changes. We've more used next
as the branch to merge into what we want to become the next release and where the development might take a bit of time. That's made it easy for us to keep developing new stuff while being able to fix stuff in master. I have no strong opinion on next
vs beta
to be honest. Though, I find next
to be very clear that this is the stuff which will be the next release.
Where will development dependencies be upgraded?
I wonder if both next
and master
should be updated. If we start pushing dev deps to next
it might be that they are not updated due to a very long time. Or, next
becomes a place where dependency updates die due to there is no active development in next
for a while.
Do we/can we skip releases for development dependency version changes?
We are already skipping releases for dev deps. Renovate bot flags dev deps as not being a release worthy by semantic release.
Should there be a schedule for merging changes from beta into master? Or would a bot command be better?
By a schedule; do you mean fixed dates?
Should non development dependencies be upgraded against the alpha branch if it is a major version change? What if they don't turn out to be breaking changes?
I'm kinda thinking they should perhaps go into both here also. We've configured renovate bot so major must be manually merged so they should not slip through and make a breaking release by accident. And the test coverage should catch kinda major breaking stuff.
Should there be a PR template setup which reminds folks and helps new comers to decide where to branch off?
Personally I find these templates a bit more annoying than helpful. Though; we should have a document describing the development workflow. My opinion is also that we should keep the barrier as low as possible for newcombers. Its not like there is a ton of PRs being submitted each day so for now I think we can keep it as simple as possible for those who would like to contribute.
Does the update of alpha and beta branches from master need to be automated?
How will an automation of this deal with merge conflicts?
Will beta and alpha releases of one module trigger the update of the dependency in the correct branch on other repos?
Yes. Thats one of the things we tested very early. We wanted next
releases to bump dependencies in the next
branches and renovate bot handle this.
Should any guide for this that is written up include description of major version changes across multiple repos?
I do not think so. A user of ex the client should not need to know about API changes in @eik/common
. If so, we're doing something wrong in how we split our code into modules.
Perhaps useful for the guide to include configuration for renovate?
Agree to that.
I'm thinking along these sorts of lines:
on master:
on next:
To be able to develop and deliver more comprehensive releases we should establish a workflow we adhere to. Currently we have been using semantic release to cut releases for us from the CI. Semantic release do have a suggested workflow regarding releasing: https://github.com/semantic-release/semantic-release/blob/0785a844fa8ac1320383452ce531898be3b01f92/docs/recipes/pre-releases.md
Is the above workflow a flow we can adhere too and is there other aspects we need to take into consideration?