在CI中,我有一个项目,其中包含已部署的许多不同应用程序服务的集成测试。我想在CD中部署应用程序服务后自动触发此CI管道。
但是,我没有从CD看到任何选项来触发CI管道。有没有一种方法可以不使用扩展名?
答案 0 :(得分:0)
但是,我没有从CD看到任何选项来触发CI管道。是 有没有办法不用扩展来做到这一点?
对于您的原始问题Is there a way to do this without extension
:答案是是。
您可以调用Azure Devops Rest API来将构建管道在Powershell task中排队。 Queue-build是设计用于将构建管道排队的命令。
我们可以将powershell任务添加为您的代理作业的最后一个任务,以运行Queue-build api,脚本如下所示:
$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)"
您应该用orgName和projectName替换YourOrganizationName和YourProjectName。另外,您需要创建具有必要权限的PAT,并将其输入$token = "your PAT"
中。 $ JSON中的BuildId是构建管道的ID,您可以在编辑管道时轻松找到该值:
如果正确配置任务,则每次成功部署发行版时,都会触发构建管道,这是部署的最后一步。
以上是在发布管道中触发构建管道的方法,但实际上在大多数情况下不推荐。我们通常使用构建来触发发布,而不是使用发布来触发构建!
同意 Daniel Mann ,您可以考虑将构建任务从构建管道移至发布管道中的一个作业,它们应该是您发布环境中的一个单独的作业