在推送到子模块时触发 Azure Pipeline 构建?

Trigger an Azure Pipeline Build on push to a sub-module?

我正在使用一个存储库 (A),其中包含一个不同的存储库作为子模块 (B)。 repoB的内容被A中的逻辑使用,需要定期更新

我目前有一个 Azure 构建管道,每当推送到 A 时就会触发该管道。我还确保构建创建的工件包含来自 B 的数据。这是在 Yaml 中定义的;简而言之:

trigger:
  branches:
    include:
      - master # <-- Trigger a build when the branch 'master' is pushed to!

我在 the documentation 中看到可以将此触发器连接到同一存储库中的不同分支和/或路径。

问题在于,作为一个子模块,Repo B 实际上是一个完全独立的 repo,与 A 完全分开推送。这意味着即使在构建管道期间拉取 A 时更新 B,推送到 B 也不会自动注册为推送到 A,因此构建不是触发。

如果我能做类似下面的事情来弥补这个就好了...

trigger:
  branches:
    include:
      - master
      - my-other-repo-B # <-- Trigger a build when B is pushed to!

...但这似乎不可能,据我所知。

我目前最好的选择似乎是为 B 创建一个单独的构建,然后在 Azure DevOps 中添加一个额外的触发器,只要有 运行 就会启动主构建。这在理论上应该可行,但如果可能的话,我真的更愿意在同一个地方控制构建的两个触发器。

有没有其他好的/干净的方法来实现这个?

您可以使用存储库资源在另一个存储库上发生推送时触发管道。

  1. 如果RepoARepoB在同一个项目中,可以像下面这样设置在构建管道的 YAML 文件中。
resources:
  repositories:
  - repository: subRepos  # The ID of the repository. You can customize it here.
    type: git
    name: RepoB  # The actual name of the repository.
    trigger:  # CI trigger
      batch: true
      branches:  # branch filter
        . . .
      paths:  # path filter
        . . .
      tags:  # tag filter
        . . .
  1. 如果RepoB在同一组织的不同项目中(例如ProjB),您可以在构建管道的 YAML 文件中进行如下设置。
resources:
  repositories:
  - repository: subRepos
    type: git
    name: ProjB/RepoB
    trigger:
      batch: true
      branches:
        . . .
      paths:
        . . .
      tags:
        . . .

更多详细信息,您可以参考以下文档: