Как передать параметры в Azure Dev ops для создания конвейера извне, чтобы контролировать выполнение задач? - PullRequest
0 голосов
/ 26 сентября 2019

Мой запрос: Как передать параметры в Azure Dev ops построить конвейер извне, чтобы контролировать выполнение задач?Чтобы объяснить подробно, вот объяснение:

У меня есть проект в Azure Dev ops, у которого есть конвейер сборки, сконфигурированный с некоторыми сериями задач, включая сборку решения, генерацию развертываемого пакета и т. Д. Обычно это выполняетсяну и хорошо без проблем.

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

Позвольте мне объяснить на примере:

  1. Рассмотрим проект под названием A в Azure Dev ops, в котором конвейер сборки настроен на 5 различных задач
  2. В том же самомскажем, есть конвейерная переменная, созданная как flag
  3. Рассмотрим внешнее приложение, такое как ms flow, которое запускает проект. Конвейер сборки на шаге 1
  4. Я должен быть в состоянии передатьзначение переменной флага, созданное на шаге 2 с использованием потока на третьем шаге, например true или false.
  5. При использовании значения флага, передаваемого в конвейер сборки из потока ms, должны выполняться задачи в конвейере сборки, т. е. если значениевход через внешнее приложение в конвейер сборки является истинным, тогда он должен выполнить только 3, 4 задачи в конвейере сборки, а пропустить другие из false следует выполнить все шаги в конвейере сборки в Azure Dev ops.

Вопрос в том, как добиться такого поведения?

Пожалуйста, помогите мне решить эту проблему?

Если передача значения в переменную невозможна, не могли бы вы дать мне знать, как добиться поведения пропуска в Azure Dev ops build pipe, запускаемого из внешнего приложения, такого как ms flow?

Ответы [ 2 ]

0 голосов
/ 30 сентября 2019

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

Param(
       [string]$collectionurl = "https://dev.azure.com/{orgname}",
       [string]$project = "{projectname}",
       [string]$user = "{useraccount}",
       [string]$token = "{yourPAT}"
)

$base64AuthInfo= [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user, $token)))

$defurl = "$collectionurl/$project/_apis/build/builds?api-version=5.0"
$json = '{"parameters":  "{\"AnotherParameter\":  \"true\"}","definition":  {"id":  "{definitionId}"}}'
$updatedef = Invoke-RestMethod -Uri $defurl -Method Post -Body $json -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}

Вы можете создать три конвейера сборки.Первый конвейер - это ваш основной конвейер, который имеет 5 различных задач.Вы можете установить пользовательское условие, как показано ниже.Это означает, что только когда значение AnotherParameter равно true, задача будет выполняться.

enter image description here

Второй и третий конвейеры являются конвейером триггера.Во втором конвейере вы можете использовать сценарий powershell, чтобы установить для AnotherParameter значение false, а в третьем конвейере установить значение как true.

Затем установить второй конвейер, который запускается внешним приложением, и третий конвейер запускается.вашим репо или другими.

Когда внешнее приложение запускает второй конвейер, значение AnotherParameter будет равно false, а некоторые задачи в первом конвейере не будут выполняться.

Когда третий коммит запускается вашим коммитом, значение AnotherParameter будет истинным, и все задачи в первом конвейере будут выполняться как положено.

0 голосов
/ 26 сентября 2019

Вы можете вызвать REST API Azure DevOps и передать параметры в запросе.Посмотрите этот пост для получения дополнительной информации: Запуск сборки и передача переменных через VSTS Rest API

Если вы хотите добавить условие в задачу или конвейер сборки, ознакомьтесь сдокументация для условий: Условия - Лазурные Трубопроводы

...