标记多个提交的替代方案

Tagging alternative for multiple commits

在我们的 CI/CD 管道中,我们正在寻找一种方法来使用 cirle ci 完成 CI 部分,使用 Jenkins 完成部署部分(技术限制使我们无法使用 circle ci 进行部署)。

我们为每个环境(测试、验收、生产)创建了一个分支,并让 jenkins 作业监听这些分支上的变化并在适用时部署它们。

然而,我们想为每个通过 CI(例如 "ci-passed")的提交添加一个标签,并在 jenkins 作业中检查这个标签。这是为了确保无法部署蹩脚的代码。

我们考虑过创建动态标签(例如 "ci-pased-{some timestamp}"),但对此不确定,因为这会引入很多标签。是否有任何类型的替代标签可以在不同的提交中重复使用。

我们知道您可以移动标签,但我们希望在每个已通过 ci 的提交上保留标签,以便可以随时重新部署任何提交。

如有任何建议,我们将不胜感激ci。

好吧,你有点为自己设定了一个相互矛盾的要求:一方面你想要 to add a tag to every commit that has passed the CI 而另一方面你抱怨 this introduces a lot of tags :)

个人而言,对于通过 CI 的每一次提交,我都会:

  • 添加一个 ci-passed-{some timestamp} 标签 - 这会给你一个 historical/trending 的视角和识别各种可部署版本的能力(假设你最终接受这是你从上述冲突中更喜欢的)
  • add/update 一个 ci-passed-latest(或类似的)标签 - 为您提供最新的可部署版本(通常是最常见的用例),而无需找出具体的 ci-passed-{some timestamp}应该使用标签。

您还可以通过在标签名称中对环境进行编码来扩展此方案,以清楚地识别通过 testing/acceptance/production(或任何其他阶段可能会添加到您的 CD 管道中)检查的内容。