繁体   English   中英

如何根据提交消息触发 azure devops build pipeline?

[英]How to trigger azure devops build pipeline based on the commit message?

如何从特定提交触发构建?


我正在构建一个 Azure Devops 项目。 该项目同时具有 UI 和后端应用程序代码。 两个代码都作为单个项目放置在 GitLab 中。 但是不同的团队正在为 UI 和后端工作。 我需要配置两个构建管道,一个用于 UI 更改,一个用于后端更改。

我需要的是根据提交消息触发特定的管道。 IE; 如果进行了 UI 更改,则提交消息中将包含关键字“ UI_CHANGES ”。 Azure DevOps 应该认识到这一点并触发 UI 构建管道。

我可以在这里使用 Git 标签或其他可能的想法吗?

您不需要根据提交消息运行管道,您可以创建两个管道并在触发器中确定哪个将在使用 Path 过滤器时运行:

在此处输入图片说明

在我看来,您需要某种“路径过滤器”。 Azure DevOps 有一个集成的“路径过滤器”,但这仅适用于 Azure DevOps 上托管的存储库。

我建议你在目前的情况下可以做什么。

  • 将您的存储库移至 Azure DevOps这是我眼中最好的解决方案,但如果您出于任何原因必须坚持使用 GitLab,则不适用

    • 优点:您在同一位置拥有 repo 和管道
    • 缺点:您必须移动 repo 并设置新的会员资格等。
  • 使用 GitLab 构建/发布我对 GitLab 中的管道没有经验,所以我不能说这是否是一个可行的解决方案

    • 优点:您在同一位置拥有 repo 和管道,不需要移动
    • 我不确定 GitLab 的构建/发布是如何工作的(无论是 pro 还是 con)
  • 将您的 GitLab 存储库镜像到 Azure DevOps您可以使用此扩展不断将您的存储库从 GitLab 镜像到 Azure DevOps,并使用管道的集成路径过滤器构建/发布

    • 优点:您不需要移动,但可以使用 Azure DevOps 的管道
    • 缺点:您依赖于仅“连接”两个独立存储库的扩展。
  • 将您的 GitLab 存储库与 Azure DevOps 连接起来,并在管道中执行逻辑部分我认为这是最不利的解决方案,因为您必须在管道中手动完成所有逻辑工作。 不过,如果您对此解决方案感兴趣,我建议您进一步查看 此扩展 但它不如默认路径过滤器舒服。

更新我只是对这个扩展有更深入的了解,我认为这不符合您的需求。 对不起。 尽管如此,您可以在没有扩展的情况下连接到您的 GitLab 存储库。 只需创建一个 PAT 来读取您的存储库,在 Azure DevOps 中为“其他 git”添加一个服务连接
如前所述,您可以执行在管道中构建内容的逻辑(不利)。

干杯和好运!

方法一:

如果提交消息包含/排除任何短语( source ):

...
steps:
  - bash: echo "Hello world"
    condition: not(contains(variables['Build.SourceVersionMessage'], 'HEY_DONTBUILD'))

删除not反转逻辑

方法二:

另一种方法是包含[ci skip] (或提交消息中的其他特殊短语)以跳过该提交的构建。

方法三:

only不同项目使用标志( source ):

rspec:
  script: ...
  only:
    variables:
      - $CI_COMMIT_MESSAGE =~ /some-regexp/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM