由于Azure测试计划无法从其他项目中选择版本的限制,我想知道是否可以创建一个管道,至少可以从另一个项目克隆版本号。
以下是叙述:
有一个带有管道
P1
的项目ProjA
,它使用以下行生成内部版本号name: $(date:yyyyMMdd)$(rev:.r)
我想要这样:
另一个项目
ProjB
有一个管道P1
,它与ProjA
中的名称匹配。5被触发,因此每当ProjA.P1
成功时都会记录一个生成,并使用与从ProjA.P1
运行的生成相同的名称记录该生成
UPDATE注意,我专门寻找ProjA.P1
,而不是触发ProjA.P1
的任何内容。最初接受的答案适用于从ProjA.P1
管道触发ProjA.P1
的简单情况。
但是,如果ProjA.P1
具有triggers: none
并使用resources.pipelines
触发其内部版本,则使用引用管道的内部版本号,而不是ProjA.P1
。
我们可以设置一个管道完成触发器来触发一个又一个管道。(ProjA.P1
完成时触发ProjB.P1
。(
我们可以使用YAML中的资源变量$(resources.pipeline.<Alias>.runName)
来获取触发器构建名称。(它将在管道中检索管道ProjA.P1
的buildNumber
。(有关详细信息,请参阅管道资源元数据作为预定义变量。
然后使用UpdateBuildNumber日志记录命令(##vso[build.updatebuildnumber]build number
(更新ProjB.P1
的内部版本号。
ProjB.P1
YAML供您参考:
trigger: none
resources:
pipelines:
- pipeline: ProjA-Trigger # Any alias here
source: P1 # The real pipeline name (ProjA.P1 here)
project: ProjA # Project ProjA
trigger:
branches:
include:
- refs/heads/main
steps:
- task: Bash@3
inputs:
targetType: 'inline'
script: 'echo "##vso[build.updatebuildnumber]$(resources.pipeline.ProjA-Trigger.runName)"'