从另一个管道触发 Azure DevOps 管道,该管道由另一个存储库的标签推送触发

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

基于我发布的关于通过标签推送从另一个管道触发管道的上一个线程从由标签推送触发的另一个管道触发Azure DevOps管道现已解决,但当我尝试触发另一个管道时,它会带来新问题来自不同存储库的管道,详细信息如下。

源管道

pr: none
trigger: none

resources:
  repositories:
  - repository: demoRepo
    type: git
    name: Project/demoRepo
    trigger:
      tags:
        include:
          - '*'

steps:
  - script: |
      echo "##vso[build.addbuildtag]ABuildTag"
      displayName: Add a tag for the build of source pipeline
  - task: CopyFiles@2
    inputs:
      contents: $(System.DefaultWorkingDirectory)/**/*.yml
      targetFolder: $(Build.ArtifactStagingDirectory)
  - task: PublishBuildArtifacts@1
    inputs:
      pathtoPublish: $(Build.ArtifactStagingDirectory)
      artifactName: dummy-$(Build.BuildId)

取决于管道

trigger: none
pr: none
resources:
  pipelines:
    - pipeline: source
      # project: Pipelining
      source: source
      trigger: 
        branches:
          include:
          - refs/tags/*
        tags:
        - ABuildTag

steps:
  - checkout: none
  - script: echo 'triggered depends'

根据上面的管道yaml,

depends pipeline
source pipeline
之后没有执行,而当我从另一个存储库(
source pipeline
)触发
demoRepo
时,它应该执行。

figure 1

在上面的

Figure 1
中,UI显示
source pipeline
main
分支上被触发。但是,我按下了一个标签并将触发器设置为
refs/tags/*
,如前所述。

但是当我点击源管道时。它向我展示了每次运行的详细信息,这是由我推送的标签触发的,如下图所示。 enter image description here

azure azure-devops azure-pipelines cicd
1个回答
0
投票

您需要了解以下几点:

  1. 在管道中,如果定义的资源触发器来自另一个存储库,则当前管道将始终在当前管道所在的

    self
    存储库的默认分支上触发(运行)。这就是为什么您的 源管道
    main
    分支上触发,该分支是
    self
    存储库的默认分支,而不是
    demoRepo
    存储库。

  2. Depends pipeline中,它直接由Source pipeline触发,而不是由

    demoRepo
    存储库触发,因此,管道资源上设置的过滤器将仅评估Source pipeline所在的存储库.

    • 您在管道资源上定义的过滤器“

      - refs/tags/*
      ”是从源管道所在的存储库(而不是
      demoRepo
      存储库)检测标签。

    • 类似,标签“

      - ABuildTag
      ”也应该是添加在源管道上的构建标签。这不是 git 标签。您可以手动或在运行当前构建期间使用“
      addbuildtag
      ”命令将构建标签添加到构建中。

      enter image description here


对于您的情况,您可以尝试更改如下配置:

  1. Source pipeline 中,添加运行 '
    addbuildtag
    ' 命令来创建构建标记(例如,
    resRepoTagTriggered
    )。
. . .

steps:
- bash: echo "##vso[build.addbuildtag]resRepoTagTriggered"
  displayName: 'Add Build Tag'
  1. Depends pipeline 中,更改为以下任意配置。
    • 删除分支过滤器。
resources:
  pipelines:
    - pipeline: source
      # project: Pipelining
      source: source
      trigger:
        tags:
        - resRepoTagTriggered
  • 将分支过滤器更改为“
    - refs/heads/main
    ”。
resources:
  pipelines:
    - pipeline: source
      # project: Pipelining
      source: source
      trigger: 
        branches:
          include:
          - refs/heads/main
        tags:
        - resRepoTagTriggered

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