我有多个工件,在构建并将它们部署到其各自的代理程序后,我会检测是否触发了其中一个工件
or(succeeded(), eq(variables['Build.SourceBranch'], '$_Multi-Country/SSIS_FileDrop/Dev/DEV'))
答案 0 :(得分:0)
由于您可以将多个工件源绑定到一个发行版定义,因此不存在这样的预定义变量可以实现工件名称。
尽管工件源不是发布管道中唯一的,但与工件相关的内部版本在版本中是唯一的,并且可以通过一个预定义变量Build.Buildid
获得。
因此,这里同意@MarTin的评论,您可以使用此api首先获得工件名称。
下面是powershell脚本示例:
$url = "$($env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI)$env:SYSTEM_TEAMPROJECTID/_apis/build/builds/$env:BUILD_BUILDID/artifacts?api-version=4.1"
$pipeline = Invoke-RestMethod -Uri $url -Headers @{
Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
} -Method Get
Write-Host "artifactName:" ($artifactName = $Pipeline.value.name)
Write-Host "##vso[task.setvariable variable=artifactName]$artifactName"
在此脚本中,使用环境SYSTEM_TEAMFOUNDATIONCOLLECTIONURI
和SYSTEM_TEAMPROJECTID
获取当前的组织名称和项目名称。另外,支持此api的最新版本是4.1
。
您可以在代理作业的第一步中添加此powershell任务。然后,您将能够在条件表达式中使用变量artifactName
来验证触发器工件名称是否为特定的名称。