Тем не менее, я не вижу никакой опции с CD для запуска конвейера CI. Есть ли способ сделать это без использования расширения?
Для вашего исходного вопроса Is there a way to do this without extension
: Ответ Да .
Вы можете позвонить Azure Devops Rest API для постановки вашего конвейера сборки в задачу Powershell . Queue-build - это система, предназначенная для постановки в очередь конвейера сборки.
Мы можем добавить задачу powershell в качестве последней задачи вашего агента по запуску API-интерфейса Queue-build, сценарий будет выглядеть так: например:
$token = "xxx"
$url="https://dev.azure.com/YourOrganizationName/YourProjectName/_apis/build/builds?api-version=5.1"
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))
$JSON = @'
{
"definition": {
"id": BuildId
}
}
'@
$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Post -Body $JSON -ContentType application/json
Write-Host "result = $($response | ConvertTo-Json -Depth 100)"
Вы должны заменить YourOrganizationName и YourProjectName на ваши orgName и projectName. Также вам необходимо создать PAT с необходимыми разрешениями и ввести его в $token = "your PAT"
. И BuildId в вашем $ JSON - это идентификатор вашего конвейера сборки, вы можете легко найти его значение при редактировании вашего конвейера:
![enter image description here](https://i.stack.imgur.com/DyvD0.png)
Если вы правильно настроите задачу, каждый раз, когда ваш выпуск будет успешно развернут, он будет запускать конвейер сборки как последний шаг вашего развертывания.
Выше приведен способ запуска конвейера сборки в конвейере выпуска, но на самом деле это не рекомендуется в большинстве случаев. Мы обычно используем сборку для запуска выпуска вместо запуска сборки с использованием выпуска!
Согласитесь с Даниэль Манн , вы можете подумать о переносе задач сборки из конвейера сборки в одно задание в конвейере выпуска , они должны быть отдельной задачей в вашем релизе окружающая среда.