1

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

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

当我用谷歌搜索时,我知道 Azure DevOps 不支持基于提交消息的过滤来触发新的构建管道。

我可以在这里使用 Git 标签吗?如果是,请指导我如何使用它。也欢迎任何其他可能的想法!

提前致谢。

4

3 回答 3

1

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

在此处输入图像描述

于 2020-01-06T08:51:30.457 回答
0

方法一:

如果提交消息包含/排除任何短语(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/
于 2022-02-24T15:43:31.583 回答
0

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

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

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

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

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

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

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

干杯和好运!

于 2020-01-06T09:31:24.013 回答