从CD触发CI管道

时间:2020-04-28 15:00:19

标签: azure azure-devops azure-pipelines

在CI中,我有一个项目,其中包含已部署的许多不同应用程序服务的集成测试。我想在CD中部署应用程序服务后自动触发此CI管道。

但是,我没有从CD看到任何选项来触发CI管道。有没有一种方法可以不使用扩展名?

1 个答案:

答案 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,您可以在编辑管道时轻松找到该值:

enter image description here

如果正确配置任务,则每次成功部署发行版时,都会触发构建管道,这是部署的最后一步。

以上是在发布管道中触发构建管道的方法,但实际上在大多数情况下不推荐。我们通常使用构建来触发发布,而不是使用发布来触发构建!

同意 Daniel Mann ,您可以考虑将构建任务从构建管道移至发布管道中的一个作业,它们应该是您发布环境中的一个单独的作业