提问人:Rachel 提问时间:5/27/2022 更新时间:10/16/2023 访问量:726
使用管道资源手动触发 Devops 管道应使用该分支的最新资源管道运行
Manually triggering Devops pipeline with pipeline resource should use latest resource pipeline run for that branch
问:
我在同一个存储库中有 2 个管道:
- 建
- 部署
生成管道在部署管道中声明为管道资源:
resources:
pipelines:
- pipeline: Build
source: BuildPipelineName
trigger: true
当我运行生成管道时,在同一分支上正确触发了部署管道。但是,当我手动运行部署管道时,它不会使用从同一分支运行的最新管道。
我尝试将以下行的几个变体添加到管道资源中,但该变量没有扩展:
branch: ${{ variables.Build.SourceBranchName }}
有什么方法可以做到这一点吗?
答:
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']}}
评论