AzureDevops - как выполнить агент конвейера выпуска на основе пользовательского условия, которое зависит от предыдущего агента - PullRequest
0 голосов
/ 10 января 2020

В моем конвейере выпуска 2 агента. Второй агент должен запускаться только на основе результатов первого агента.

1-й агент имеет код ниже

ssh task:

echo "##vso[task.setvariable variable=isNextExecutable;isOutput=true]true"

2-й агент имеет пользовательское условие ниже

and(succeeded(), eq(variables[isNextExecutable], 'true'))

Кроме того, я попытался обновить переменную среды с помощью API (после Как изменить Azure Переменная определения выпуска DevOps из задачи выпуска? ), но переменные обновляются, только конвейер выпуска завершается.

Мои вопросы:

1) Как выполнить агент на основе пользовательского условия на основе первого вывода агента?

2) Можно ли добавить несколько пользовательских условий на уровне задач? задание должно выполняться, если предыдущее задание выполнено успешно и на основе некоторого значения, которое было задано в предыдущем задании в том же агенте.

Ответы [ 2 ]

1 голос
/ 13 января 2020

Как запустить агент на основе пользовательского условия на основе первого вывода агента?

Для этой проблемы, если вы не используете конвейер выпуска yaml, я боюсь, что это невозможно.

Обратите внимание , что обновленное значение переменной относится к выполняемому заданию и не распространяется на задания или этапы.

Об этом говорится в официальном документе . Вы можете попытаться создать многоступенчатые конвейеры с YAML в Azure DevOps, так что вы можете использовать многократные выходные переменные для передачи значения переменной между заданиями.

В качестве обходного пути вы можете определить переменную в определении выпуска Переменная, затем использовать REST API (Определения - Обновление), чтобы обновить значение переменной определения выпуска в задании агента 1, используйте обновленное значение переменной определения выпуска в подробности о следующем задании агента см. this .

Можно ли добавить несколько пользовательских условий на уровне задачи?

Для этой проблемы ответом является да , вам нужно только использовать скрипт, подобный этому ##vso[task.setvariable variable={variableName};isOutput=true]{variableValue}, чтобы вывести его на следующую задачу.

enter image description here

В следующей задаче: enter image description here

enter image description here

0 голосов
/ 13 января 2020

После такой большой отладки я исправляю ошибку в своем скрипте PowerShell. Это может помочь другим.

Обновление определения выпуска после завершения конвейера выпуска.

https://vsrm.dev.azure.com/{org}/{project}/_apis/Release/definitions**/$(Release.ReleaseId)?api-version=5.1

Чтобы обновить определение выпуска во время выполнения конвейера выпуска, используйте ниже URL, но эти изменения не доступны в том же агенте. вам нужно создать отдельный агент, если вы хотите использовать измененные значения.

 https://vsrm.dev.azure.com/{org}/{project}/_apis/release/releases/$(Release.ReleaseId)?api-version=5.1
...