Semver bump / Delivery / Deployment strategy #256
-
So for automated semver bumping and release, I was thinking one of these flows. Both result in a publish off of a new git tag, but there is a difference in what event produces the new git tag. Would like some thoughts on what works best for our current team: Some definitions, since we are talking about libraries:
Option 1: Git tags driven off new pushes to main
pros:
cons:
Option 2: Git tags manually created by contributors
pros:
cons:
edits:
|
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 5 replies
-
Hey Tyler, Thank you for breaking this down, in my study of continuous delivery the actual act of release should be separated from the act of deployment. Deployment should happen multiple times a day which means multiple times to the main branch. If you are branching from the main, you should pull and push often, this is where many teams just work off the main branch or do trunk-based development. While code is able to run in production but not yet validated, you leverage a feature flag, so that it can be validated. I realize the development flow with libraries are a little different, but I think releases should be separated from continuous deployment, in other words, we should be able to work off of the trunk branch or a staging branch, and everyone commit to that branch even when features are in flight, and a release is cut by generating a release event on github. There is a github action that can trigger via the release event. I would recommend that we consider that approach, and consider following continuous deployment practices instead of feature branch or git flow practices. Then trigger releases from the release tags. At least lets give it a shot. Outside contributors would still need to create pull requests and have code reviewed, but it would allow for a continuous flow, and encourage outside contributors to consistently pull upstream from main before submitting their contribution. And internal contributors would not have to worry about shipping breaking features and can commit to main multiple times a day. |
Beta Was this translation helpful? Give feedback.
-
With trunk based development, Option 2 makes the most sense. This way owners can continuously push to trunk, and can separately cut a release at any time by creating a git tag ie. via a github release |
Beta Was this translation helpful? Give feedback.
With trunk based development, Option 2 makes the most sense. This way owners can continuously push to trunk, and can separately cut a release at any time by creating a git tag ie. via a github release