在Azure devops,发布管道中,我试图在两个不同的阶段之后运行一个阶段,如下所示。我在运行API测试阶段时遇到问题。
预期:
如果开发阶段或质量检查阶段成功,则需要运行API测试。
实际:
开发阶段成功后,不会触发API测试阶段。
请告诉我所需的配置。
答案 0 :(得分:0)
除了复制API测试阶段外,另一个解决方法是使用Update Release Environment rest api。请参阅以下步骤:
1,设置 API测试阶段仅在 Dev 阶段之后自动触发。
将帐户您的项目名称构建服务(您的组织)的管理部署设置为允许。此权限将允许您更新发布管道中的发布环境。
3,进入 QA 阶段->在“代理程序”部分中->选中Allow scripts to access the OAuth token
。此设置将允许您使用发布管道中的访问令牌。
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阶段。