我已经设置了我们的应用程序构建发布管道和测试自动化发布管道是分开的。目前,只要创建了构建,就会开始测试自动化,这是错误的,因为构建工件刚刚发布但尚未部署,这将完成通过发布管道。 因此,我正在寻找一种解决方案,我可以在其中将触发器添加到测试发布管道中,它将检查构建发布管道是否已完成,并将代码部署到环境中。
答案 0 :(得分:0)
如果您在一个 yml 文件中有此文件,您可以在 dependsOn
和 buildStage
和 deployStage
上使用 condition
来获取 AutomationTestsStage
阶段前一阶段的成功状态
stages:
- stage: 'AutomationTestsStage'
dependsOn:
- buildStage
- deployStage
condition: succeeded()
答案 1 :(得分:0)
根据您的描述,您拥有三个管道,构建管道(构建和发布工件)、应用程序发布管道和测试自动化发布管道。您已经设置了一个 CD 触发器,该触发器将在管道完成后一起触发发布管道。但是您希望管道运行的顺序是构建管道->应用发布管道->测试自动化发布管道,对吗?< /p> <块引用>
所以我正在寻找一种解决方案,我可以将触发器添加到测试发布管道中,它将检查构建发布管道是否已完成,并将代码部署到环境中。
作为一种解决方法,我们需要打开测试自动化发布管道定义并禁用 CD 触发器,然后打开打开应用程序发布管道,在作业结束时添加任务电源外壳并调用 REST API 以触发发布管道(测试自动化发布管道)。
Power shell 脚本:
$token = "{PAT}"
$url = "https://vsrm.dev.azure.com/{Org name}/{Project name}/_apis/Release/releases?api-version=5.0"
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))
$JSON = @"
{
"definitionId": {test automation release pipeline definition ID}
}
"@
$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Post -ContentType application/json -body $JSON
}
另外,我们需要将Power Shell条件设置为Only when all previous tasks have succeeded
,查看下图。
现在,它将在 build release pipeline is completed & code is deployed to the environment