如何仅在 azure devops 中完成合并请求时触发管道

问题描述 投票:0回答:1

我有两个不同的存储库和一个管道,仅当 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 中使用了这个,但是当开发分支发生变化时它就会触发

azure-devops yaml
1个回答
0
投票

要仅在 repoB 中完成合并请求时触发管道,您可以创建用于 PR 更新的 webhook,然后使用 webhook 来触发管道。请参阅下面的详细信息。

  1. 创建一个 webhook。

    转到项目设置 -> 服务挂钩 -> 加号按钮 -> WebHooks -> 下一步 enter image description here

    enter image description here

    • 触发此类事件:拉取请求已更新
    • 存储库:repoB
    • 目标分支:PR 的目标分支。对我来说,这是主要的。

    enter image description here

    • 网址:
      https://dev.azure.com/{OrganizationName}/_apis/public/distributedtask/webhooks/{WebhookName}?api-version=6.0-preview
      。对我来说,它被设置为
      WebhookPR
  2. 创建传入 WebHook 服务连接。

    转到项目设置 -> 服务连接 -> 选择传入 WebHook

    enter image description here

    • WebHook 名称:您在上面设置的 webhook 名称。
    • 服务连接名称:您的服务连接的名称。这对我来说是
      WebhookPR-SC
  3. 将 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
  1. 结果

    当repoB中PR完成后,将触发管道,如下所示。

    enter image description here

在上面的 yaml 中使用了这个,但是当开发分支发生变化时它就会触发

这是因为您为

develop
分支配置了CI触发器,并且为
develop
分支配置了repo资源触发器。我已经在上面的 yaml 中删除了它们。

© www.soinside.com 2019 - 2024. All rights reserved.