如何执行Azure开发发布管道中的下一阶段?

m1m5dgzv  于 2023-02-19  发布在  其他
关注(0)|答案(1)|浏览(142)

在Azure devops发布管道中,我尝试在两个不同阶段之后运行一个阶段,如下所示。我在运行API测试阶段时遇到问题。
1.开发阶段自动触发。

  1. QA阶段手动触发。
  2. API测试需要成功运行Dev/QA。

预期:

如果开发或QA阶段成功,则需要运行API测试。

实际

开发阶段成功时,不会触发API测试阶段。
请让我知道所需的配置。

nszi6y05

nszi6y051#

除了复制API测试阶段外,另一个解决方法是使用Update Release Environment rest api。请参阅以下步骤:
1,设置API-测试阶段仅在Dev阶段后自动触发。

2,转到您的版本编辑页面的安全页面。

将帐户yourProjectname生成服务(您的组织)管理部署设置为允许。此权限将允许您更新发布管道中的发布环境。

3,转到QA阶段--〉在代理作业部分--〉选中Allow scripts to access the OAuth token。此设置将允许您在发布管道中使用accesstoken。

4、经过以上准备,现在可以在QA阶段末尾添加一个脚本任务,调用release rest API,见powershell任务下例:

#Get releaseresponse
$Releaseurl= "https://vsrm.dev.azure.com/{yourOrg}/$(System.TeamProject)/_apis/Release/releases/$(Release.ReleaseId)?api-version=6.0-preview.8" 

$releaseresponse = Invoke-RestMethod -Method Get -Headers @{Authorization = "Bearer $(system.accesstoken)"} -ContentType application/json -Uri $Releaseurl

#Get the environment ID of API-Test stage from the release response:
$id = $releaseresponse.environments |  Where-Object{$_.name -match "API-Test"} | select id

#Create the JSON body for the deployment:
$deploymentbody = @" 
{"status": "inprogress"} 
"@
#Invoke the REST method to trigger the deployment to API-Test stage:
$DeployUrl = "https://vsrm.dev.azure.com/{yourOrg}/$(System.TeamProject)/_apis/release/releases/$(Release.ReleaseId)/environments/$($id.id)?api-version=6.0-preview.7" 

$DeployRelease = Invoke-RestMethod -Method Patch -ContentType application/json -Uri $DeployUrl -Headers @{Authorization = "Bearer $(system.accesstoken)"} -Body $deploymentbody

以上脚本首先调用get Release rest api获取API-Test stage的环境id,然后调用更新发布环境rest api触发部署到API-Test。
因此,上述脚本可以实现在手动部署到QA阶段成功后触发API-Test阶段。

相关问题