独特地识别暂存版本并了解 CI/CD 管道

时间:2021-08-02 00:37:16

标签: devops github-actions nexus sonatype cicd

我正在尝试为 sbt 项目创建以下 CI/CD 管道,尽管该想法与任何语言无关:

<块引用>

main <-(A)- staging <-(B)- develop <-(C)- features/feature-x

此处,ABC 标识以下工作流程:

工作流程 C: 此工作流的想法是能够不断地将修复程序/功能合并到 develop 分支。

  • 执行单元/集成测试
  • 让代码所有者审查代码
  • 将工件发布到快照 OSSRH

工作流程 B:develop 分支中有足够多的修复/功能时,代码所有者可以决定将此分支合并到 staging 分支

  • 执行单元/集成测试
  • 将工件推送到临时服务器

注意:这里是 QA 来测试暂存版本。

工作流程 A:当暂存版本通过所有 QA 测试后,将向公众发布

  • 执行单元/集成测试
  • 发布暂存工件
  • 发布发行说明

我有几个与此管道相关的问题:

  1. 假设暂存版本标识为 v1.2.0。现在 QA 在这个暂存版本中发现了几个问题,开发团队修复并重新发布了暂存版本。我的问题是,如果我们继续保持相同的版本,我们如何确定我们是否有更新的暂存版本? (我一直在指要发布到快照/暂存仓库的 Sonatype docs)我能想到的唯一标识较新发布的一种方法是使用提交 ID,但这看起来不直观,否则我们可以提高版本数字,但那不会是正确的枯萎。我能想到的另一种方法是使用像“-RC”这样的预发布前缀,但即使是这些也是公开发布的。 See here

  2. 当我们必须支持多个版本时,这个管道会是什么样子?假设我们已经公开发布了 1.2.01.3.12.3.1。在这种情况下,我们可能必须独立支持所有版本,例如 1.2.x1.3.x2.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

  • 我们将如何处理从 say 1.2.x2.3.x 等的合并更改?
  • 这会不会在我们每次合并时都会导致合并冲突?
  • 我们可能不想将这些更改合并到新的分支,对吗?

您有什么想改进这条管道的建议吗?您能否指出深入讨论和解释 cicd 管道和发布版本控制的文档/书籍?

0 个答案:

没有答案