theohbrothers/docker-alpine

No reliance on release branch

leojonathanoh opened this issue · 0 comments

Current

Reliance on release branch

Expectation

No reliance on release branch.

Discussion

Currently, the workflow is git checkout release && git merge --no-ff master && git push and that will be the automated release https://github.com/theohbrothers/docker-alpine/blob/20211012.0.0/.github/workflows/ci-master-pr.yml#L1314-L1401. However, in particular one severe weakness is the converge-master-and-release-branches where the idea is that the HEAD of release will be merged into master at the end of a release pipeline. The problem with this is that if an PR was merged into master anytime during the release pipeline, the convergence will fail and the pipeline fails, resulting in no desired convergence assumed by the workflow.

Hence a better way is to not even have divergence from master, by removing the need for release branch completely:

  • master and pr: Typical workflow
  • tags for releases
    -.vscode/tasks.json task can do a git tag <calver> && git push --tag
    • A automated release job can do the equivalent of git tag <calver> && git push --tag

Benefits:

  • Familar workflow with master / pr
  • No need for release branch
  • Generic ci means reusable ci configs for other projects. E.g. startersclan/docker-steamcmd#7