git - 标记多个提交的替代方案

标签 git jenkins continuous-integration continuous-deployment circleci

在我们的 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/

相关文章:

git - 如何从另一个存储库创建新分支?

Jenkins 管道 : How to archive artifacts when the build fails?

macos - Jenkins OSX "cannot run program"

plugins - 电子邮件 ext 插件用于通过邮件发送 HTML Junit 报告

continuous-integration - 持续集成工具

azure - 发布成功,无法在 Azure Synapse Analytics 中触发

xamarin - 如何获取 Xamarin 测试云设备字符串

git - 当 repo 以深度 = 1 克隆时获取最新标签 `git describe --tags'

Git 没有显示任何冲突,并且正在覆盖我的本地副本

python 脚本执行 git 命令并在 html 页面上显示输出