我正在尝试为 sbt
项目创建以下 CI/CD 管道,尽管该想法与任何语言无关:
main <-(A)- staging <-(B)- develop <-(C)- features/feature-x
此处,A
、B
、C
标识以下工作流程:
工作流程 C:
此工作流的想法是能够不断地将修复程序/功能合并到 develop
分支。
工作流程 B:当 develop
分支中有足够多的修复/功能时,代码所有者可以决定将此分支合并到 staging
分支
注意:这里是 QA 来测试暂存版本。
工作流程 A:当暂存版本通过所有 QA 测试后,将向公众发布
我有几个与此管道相关的问题:
假设暂存版本标识为 v1.2.0。现在 QA 在这个暂存版本中发现了几个问题,开发团队修复并重新发布了暂存版本。我的问题是,如果我们继续保持相同的版本,我们如何确定我们是否有更新的暂存版本? (我一直在指要发布到快照/暂存仓库的 Sonatype docs)我能想到的唯一标识较新发布的一种方法是使用提交 ID,但这看起来不直观,否则我们可以提高版本数字,但那不会是正确的枯萎。我能想到的另一种方法是使用像“-RC”这样的预发布前缀,但即使是这些也是公开发布的。 See here。
当我们必须支持多个版本时,这个管道会是什么样子?假设我们已经公开发布了 1.2.0
、1.3.1
和 2.3.1
。在这种情况下,我们可能必须独立支持所有版本,例如 1.2.x
、1.3.x
和 2.3.x
。
它看起来像这样吗?
<块引用>main1.2.x <-(A)- staging1.2.x <-(B)- develop1.2.x <-(C)- features/feature-x
<块引用>main1.3.x <-(A)- staging1.3.x <-(B)- develop1.3.x <-(C)- features/feature-x
<块引用>main2.3.x <-(A)- staging2.3.x <-(B)- develop2.3.x <-(C)- features/feature-x
1.2.x
到 2.3.x
等的合并更改?您有什么想改进这条管道的建议吗?您能否指出深入讨论和解释 cicd 管道和发布版本控制的文档/书籍?