我有一个管道 yaml,它是根据另一个管道的完成而触发的。我想访问触发器资源的属性以获取 runName/buildNumber 并将其用作第二个管道中的变量。我该怎么做?
管道 yaml 具有以下格式:
resources:
pipelines:
- pipeline: OfficialReleaseBuild
source: Release-Official
trigger:
branches:
include:
- release/*
tags:
- weeklyRelease
这工作正常,每当带有“weeklyRelease”标签的发布官方管道的构建完成时,它就会触发此管道
但是,由于该管道可以手动或自动触发,因此我想根据 ResourceTrigger 提供的属性设置一个变量:
variables:
# package version to publish
- name: version
${{ if eq( variables['resources.triggeringAlias'], 'OfficialReleaseBuild' ) }}:
value: variables['resources.pipeline.OfficialReleaseBuild.runName']
${{ else }}:
value: "${{ parameters.packageVersion }}"
但是,它不起作用。我有什么遗漏的吗?它始终默认为parameters.packageVersion。如何从资源触发器访问属性?
这是因为
${{ if eq( variables['resources.triggeringAlias'], 'OfficialReleaseBuild' ) }}:
表达式是在编译时处理的,但 resources.triggeringAlias
是运行时表达式。您可以使用日志记录命令:SetVariable:初始化或修改变量的值
variables:
# package version to publish
- name: version
${{ if eq( variables['resources.triggeringAlias'], 'OfficialReleaseBuild' ) }}:
value: variables['resources.pipeline.OfficialReleaseBuild.runName']
${{ else }}:
value: "${{ parameters.packageVersion }}"
JobsAndStepsSection:
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
if ('OfficialReleaseBuild' -eq $(resources.triggeringAlias))
{
Write-Host "##vso[task.setvariable variable=version;]$(resources.pipeline.OfficialReleaseBuild.runName)"
}