如何使用另一个项目管道中的编号创建生成的"copy"



由于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.P1buildNumber。(有关详细信息,请参阅管道资源元数据作为预定义变量。

然后使用UpdateBuildNumber日志记录命令(##vso[build.updatebuildnumber]build number(更新ProjB.P1的内部版本号。

ProjB.P1YAML供您参考:

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)"'

最新更新