如何在Azure Devops发布管道中执行下一阶段?

时间:2020-07-24 01:26:56

标签: azure azure-devops

在Azure devops,发布管道中,我试图在两个不同的阶段之后运行一个阶段,如下所示。我在运行API测试阶段时遇到问题。

  1. 开发阶段是自动触发的。
  2. 质量检查阶段是手动触发的。
  3. API测试必须成功运行Dev / QA。

enter image description here

预期:

如果开发阶段或质量检查阶段成功,则需要运行API测试。

实际:

开发阶段成功后,不会触发API测试阶段。

请告诉我所需的配置。

1 个答案:

答案 0 :(得分:0)

除了复制API测试阶段外,另一个解决方法是使用Update Release Environment rest api。请参阅以下步骤:

1,设置 API测试阶段仅在 Dev 阶段之后自动触发。

enter image description here

2,转到发布编辑页面的安全性页面。 enter image description here

将帐户您的项目名称构建服务(您的组织)管理部署设置为允许。此权限将允许您更新发布管道中的发布环境。

enter image description here

3,进入 QA 阶段->在“代理程序”部分中->选中Allow scripts to access the OAuth token。此设置将允许您使用发布管道中的访问令牌。

enter image description here

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阶段的环境ID。 然后调用更新发布环境rest api触发部署到API-Test。

在成功手动部署到QA阶段后,上述脚本可以实现API-Test阶段。