Из того, что я знаю, это пока невозможно с YAML, потому что в YAML нет простого способа получить теги. Вы можете попробовать output variable
jobs:
- job: Foo
steps:
- script: |
echo "This is job Foo."
echo "##vso[task.setvariable variable=doThing;isOutput=true]Yes" #The variable doThing is set to true
name: DetermineResult
- job: Bar
dependsOn: Foo
condition: eq(dependencies.Foo.outputs['DetermineResult.doThing'], 'Yes') #map doThing and check if true
steps:
- script: echo "Job Foo ran and doThing is true."
Вы также можете попробовать использовать метод обхода, который в этом случае:
- Извлечение тегов с использованием REST API в сценарии powershell
PUT https://dev.azure.com/{organization}/{project}/_apis/build/builds/{buildId}/tags/{tag}?api-version=5.1
- Затем присвойте свои теги выходным переменным, используя команды ведения журнала
- И, наконец, используйте выходную переменную в условии
EDIT
Таким образом, похоже, что это невозможно в данный момент, но должно быть доступно в ближайшее время. Пожалуйста, проверьте эту проблему GitHub .
Выходные переменные теперь могут использоваться на всех этапах конвейера на основе YAML. Это помогает вам передавать полезную информацию, такую как решение go / no- go или идентификатор сгенерированного вывода, с одного этапа на другой. Результат (статус) предыдущего этапа и его заданий также доступен.
Выходные переменные по-прежнему создаются шагами внутри заданий. Вместо ссылки dependencies.jobName.outputs['stepName.variableName']
, этапы относятся к stageDependencies.stageName.jobName.outputs['stepName.variableName']
. Примечание: по умолчанию каждый этап в конвейере зависит от того, который находится перед ним в файле YAML. Поэтому каждый этап может использовать выходные переменные предыдущего этапа. Вы можете изменить график зависимости, который также изменит доступные выходные переменные. Например, если для этапа 3 требуется переменная из этапа 1, необходимо будет объявить явную зависимость от этапа 1.
Я пробовал сейчас:
stages:
- stage: A
jobs:
- job: JA
steps:
- script: |
echo "This is job Foo."
echo "##vso[task.setvariable variable=doThing;isOutput=true]Yes" #The variable doThing is set to true
name: DetermineResult
# stage B runs if A fails
- stage: B
condition: eq(stageDependencies.A.JA.outputs['DetermineResult.doThing'], 'Yes') #map doThing and check if true
jobs:
- job: JB
steps:
- bash: echo "Hello world stage B first job"
, но я получил эту ошибку:
Произошла ошибка при загрузке конвейера сборки YAML. Нераспознанное значение: 'stageDependencies'. Находится в позиции 4 в выражении: eq (stageDependencies.A.JA.outputs ['DetermineResult.doThing'], 'Yes'). Для получения дополнительной помощи см. https://go.microsoft.com/fwlink/?linkid=842996
Однако эта функция может скоро появиться у нас!