Поскольку существует 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, задача будет выполняться.
Второй и третий конвейеры являются конвейером триггера.Во втором конвейере вы можете использовать сценарий powershell, чтобы установить для AnotherParameter значение false, а в третьем конвейере установить значение как true.
Затем установить второй конвейер, который запускается внешним приложением, и третий конвейер запускается.вашим репо или другими.
Когда внешнее приложение запускает второй конвейер, значение AnotherParameter будет равно false, а некоторые задачи в первом конвейере не будут выполняться.
Когда третий коммит запускается вашим коммитом, значение AnotherParameter будет истинным, и все задачи в первом конвейере будут выполняться как положено.