在我们的 CI/CD 管道中,我们正在寻找一种方法来使用 cirle ci 完成 CI 部分,使用 Jenkins 完成部署部分(技术限制阻止我们使用 Circle ci 进行部署)。
我们为每个环境(测试、验收、生产)创建了一个分支,并让 jenkins 作业监听这些分支上的更改并在适用的情况下进行部署。
但是,我们希望为每个已通过 CI 的提交添加一个标签(例如“ci-passed”),并在 jenkins 作业中检查此标签。这是为了确保无法部署蹩脚的代码。
我们考虑过创建动态标签(例如“ci-pased-{some timestamp}”),但对此感到不确定,因为这引入了很多标签。是否有任何类型的标签替代方案可以在不同的提交中重复使用。
我们知道您可以移动标签,但我们希望在每个已通过 ci 的提交上保留标签,以便可以随时重新部署任何提交。
如有任何建议,我们将不胜感激。
最佳答案
好吧,你有点让自己面临一个相互矛盾的要求:一方面你想要 to add a tag to every commit that has passed the CI
另一方面,您提示 this introduces a lot of tags
:)
就我个人而言,对于通过 CI 的每一次提交,我会:
- 添加
ci-passed-{some timestamp}
标签 - 这将为您提供历史/趋势视角以及识别各种可部署版本的能力(假设您最终接受这是您在上述冲突中更喜欢的版本) - 添加/更新
ci-passed-latest
(或类似)标签 - 为您提供最新的可部署版本(通常是最常见的用例),而无需找出特定的ci-passed-{some timestamp}
应使用标签。
您还可以通过在标签名称中编码环境来扩展此方案,以清楚地识别通过测试/验收/生产(或可能在您的 CD 管道中添加的任何其他阶段)检查的内容。
关于git - 标记多个提交的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50876908/