【问题标题】:Azure devops Release pipeline TriggerAzure devops 发布管道触发器
【发布时间】:2021-03-07 20:14:03
【问题描述】:

我已经设置了应用程序构建发布管道和测试自动化发布管道是分开的。目前,只要创建了构建,然后测试自动化就会开始,这是错误的,因为构建工件刚刚发布但尚未部署,这将完成通过发布管道。 所以我正在寻找一种解决方案,我可以将触发器添加到测试发布管道中,它将检查构建发布管道是否已完成并将代码部署到环境中。

【问题讨论】:

标签: azure-devops testautomationfx


【解决方案1】:

根据您的描述,您有三个管道,构建管道(构建和发布工件)、应用程序发布管道和测试自动化发布管道。您已经设置了一个 CD 触发器,它将在管道完成后一起触发发布管道。但是您希望管道运行的顺序是构建管道->应用程序发布管道->测试自动化发布管道,对吗?

所以我正在寻找一种解决方案,我可以将触发器添加到测试发布管道中,它将检查构建发布管道是否已完成并将代码部署到环境中。

作为一种解决方法,我们需要打开测试自动化发布管道定义并禁用CD触发器,然后打开打开应用发布管道,在作业结束时添加任务电源shell并调用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之后运行发布测试自动化发布管道

【讨论】:

  • 谢谢你。你正是我的问题。如何获取测试自动化发布的参数定义ID?它是动态的还是总是相同的?
  • 嗨@subodhmirgal,defineId是测试自动化发布管道的管道ID,如果你不想触发发布管道,它应该总是一样的。
  • 这个问题有更新吗?如果答案能给你一些帮助,请随时告诉我。只是提醒this
  • 问题已解决并成功实施。谢谢你维托
  • 嗨@subodhmirgal,如果这个答案有帮助,请accept it as the answer?因此,它可以帮助遇到相同问题的其他社区成员,我们可以存档此线程。谢谢。祝你今天过得愉快。 :)
【解决方案2】:

如果您在一个 yml 文件中有此内容,您可以在 buildStagedeployStagecondition 上使用 dependsOn 来获取 AutomationTestsStage 阶段中​​先前阶段的成功状态

stages:
- stage: 'AutomationTestsStage'
  dependsOn:
  - buildStage
  - deployStage
  condition: succeeded()

【讨论】:

    猜你喜欢
    • 2020-04-13
    • 2020-04-24
    • 1970-01-01
    • 1970-01-01
    • 2022-10-25
    • 2021-06-24
    • 1970-01-01
    • 1970-01-01
    • 2022-07-01
    相关资源
    最近更新 更多