Поскольку вы можете иметь несколько источников артефактов, привязанных к одному определению выпуска, не существует такой заранее определенной переменной, которая могла бы получить имя артефакта.
Хотя источник артефактов не является уникальным для конвейера выпуска, но идентификатор сборки , относящийся к артефактам, уникален в выпуске, и его можно получить с помощью одной предварительно определенной переменной 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
в выражении условия, чтобы проверить, является ли имя артефакта триггера конкретным.