我有两个不同的存储库和一个管道,仅当 repoB 中完成合并请求时才需要触发管道。
trigger:
- develop
resources:
repositories:
- repository: repoA
type: git
name: sk/repoA
ref: refs/heads/develop
- repository: repoB
type: git
name: sk/repoB
ref: refs/heads/develop
trigger:
branches:
include:
- develop
在上面的 yaml 中使用了这个,但是当开发分支发生变化时它就会触发
要仅在 repoB 中完成合并请求时触发管道,您可以创建用于 PR 更新的 webhook,然后使用 webhook 来触发管道。请参阅下面的详细信息。
创建一个 webhook。
转到项目设置 -> 服务挂钩 -> 加号按钮 -> WebHooks -> 下一步
https://dev.azure.com/{OrganizationName}/_apis/public/distributedtask/webhooks/{WebhookName}?api-version=6.0-preview
。对我来说,它被设置为WebhookPR
。创建传入 WebHook 服务连接。
转到项目设置 -> 服务连接 -> 选择传入 WebHook
WebhookPR-SC
。将 webhook 资源添加到您的管道并添加过滤器以确保 PR 完成时触发它。
trigger:
- none
resources:
repositories:
- repository: repoA
type: git
name: sk/repoA
ref: refs/heads/develop
- repository: repoB
type: git
name: sk/repoB
ref: refs/heads/develop
webhooks:
- webhook: WebhookPR ### Webhook alias
connection: WebhookPR-SC ### Incoming webhook service connection
filters:
- path: resource.status
value: completed
在上面的 yaml 中使用了这个,但是当开发分支发生变化时它就会触发
这是因为您为
develop
分支配置了CI触发器,并且为develop
分支配置了repo资源触发器。我已经在上面的 yaml 中删除了它们。