在推送到子模块时触发 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 中添加一个额外的触发器,只要有 运行 就会启动主构建。这在理论上应该可行,但如果可能的话,我真的更愿意在同一个地方控制构建的两个触发器。
有没有其他好的/干净的方法来实现这个?
您可以使用存储库资源在另一个存储库上发生推送时触发管道。
- 如果
RepoA
和RepoB
在同一个项目中,可以像下面这样设置在构建管道的 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
. . .
- 如果
RepoB
在同一组织的不同项目中(例如ProjB
),您可以在构建管道的 YAML 文件中进行如下设置。
resources:
repositories:
- repository: subRepos
type: git
name: ProjB/RepoB
trigger:
batch: true
branches:
. . .
paths:
. . .
tags:
. . .
更多详细信息,您可以参考以下文档:
我正在使用一个存储库 (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 中添加一个额外的触发器,只要有 运行 就会启动主构建。这在理论上应该可行,但如果可能的话,我真的更愿意在同一个地方控制构建的两个触发器。
有没有其他好的/干净的方法来实现这个?
您可以使用存储库资源在另一个存储库上发生推送时触发管道。
- 如果
RepoA
和RepoB
在同一个项目中,可以像下面这样设置在构建管道的 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
. . .
- 如果
RepoB
在同一组织的不同项目中(例如ProjB
),您可以在构建管道的 YAML 文件中进行如下设置。
resources:
repositories:
- repository: subRepos
type: git
name: ProjB/RepoB
trigger:
batch: true
branches:
. . .
paths:
. . .
tags:
. . .
更多详细信息,您可以参考以下文档: