使用管道资源手动触发 Devops 管道应使用该分支的最新资源管道运行

Manually triggering Devops pipeline with pipeline resource should use latest resource pipeline run for that branch

提问人:Rachel 提问时间:5/27/2022 更新时间:10/16/2023 访问量:726

问:

我在同一个存储库中有 2 个管道:

  1. 部署

生成管道在部署管道中声明为管道资源:

resources:
  pipelines:
  - pipeline: Build 
    source: BuildPipelineName
    trigger: true

当我运行生成管道时,在同一分支上正确触发了部署管道。但是,当我手动运行部署管道时,它不会使用从同一分支运行的最新管道。

我尝试将以下行的几个变体添加到管道资源中,但该变量没有扩展:

branch: ${{ variables.Build.SourceBranchName }}

有什么方法可以做到这一点吗?

azure-devops cicd azure-pipelines-yaml

评论


答:

0赞 Bowman Zhu-MSFT 5/27/2022 #1

例如,如果我有一个名为“BuildPipelineAndDeployPipeline”的构建管道,

则下面的 YAML 定义可以从特定分支获取最新的生成管道运行:

resources:
  pipelines:
  - pipeline: BuildPipelineAndDeployPipeline
    project: xxx
    source: BuildPipelineAndDeployPipeline
    trigger:
      branches:
      - main

pool:
  vmImage: 'windows-latest'


steps:
- task: CmdLine@2
  inputs:
    script: |
      echo Write your commands here
      
      echo Hello world
      
      echo $(resources.pipeline.BuildPipelineAndDeployPipeline.runID)

评论

0赞 Rachel 5/27/2022
我希望根据触发当前管道的分支动态选择生成管道资源分支,而不是硬编码。
2赞 Rachel 5/31/2022 #2

实现我正在寻找的结果但不是很优雅的解决方法:

          - ${{ if ne(variables['Build.Reason'], 'ResourceTrigger')  }}:
            - task: DeleteFiles@1
              displayName: 'Remove downloaded artifacts from pipeline resource'
              inputs:
                SourceFolder: $(Pipeline.Workspace)

            - task: DownloadPipelineArtifact@2
              displayName: 'Download artifacts for branch'
              inputs:
                source: 'specific'
                project: 'myProject'
                pipeline: <BuildPipelineId>
                runVersion: 'latestFromBranch'    
                runBranch: $(Build.SourceBranch)
1赞 Viktor Eriksson 10/16/2023 #3

这对我有用:

resources:
  pipelines:
  - pipeline: buildpipelineCI 
    source: 'Other pipeline-CI' 
    trigger: true
    branch: ${{variables['Build.SourceBranch']}}