проверка правильности выражения, если конкретный артефакт вызван лазурными девами - PullRequest
0 голосов
/ 22 октября 2019

У меня есть несколько артефактов, и я бы обнаружил, если один из этих артефактов сработал после сборки, и развернул его на соответствующем агенте

or(succeeded(), eq(variables['Build.SourceBranch'], '$_Multi-Country/SSIS_FileDrop/Dev/DEV'))

1 Ответ

0 голосов
/ 22 октября 2019

Поскольку вы можете иметь несколько источников артефактов, привязанных к одному определению выпуска, не существует такой заранее определенной переменной, которая могла бы получить имя артефакта.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...