在Azure devops发布管道中,我尝试在两个不同阶段之后运行一个阶段,如下所示。我在运行API测试阶段时遇到问题。1.开发阶段自动触发。
预期:
如果开发或QA阶段成功,则需要运行API测试。
实际
开发阶段成功时,不会触发API测试阶段。请让我知道所需的配置。
nszi6y051#
除了复制API测试阶段外,另一个解决方法是使用Update Release Environment rest api。请参阅以下步骤:1,设置API-测试阶段仅在Dev阶段后自动触发。
2,转到您的版本编辑页面的安全页面。
将帐户yourProjectname生成服务(您的组织)的管理部署设置为允许。此权限将允许您更新发布管道中的发布环境。
3,转到QA阶段--〉在代理作业部分--〉选中Allow scripts to access the OAuth token。此设置将允许您在发布管道中使用accesstoken。
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 stage的环境id,然后调用更新发布环境rest api触发部署到API-Test。因此,上述脚本可以实现在手动部署到QA阶段成功后触发API-Test阶段。
1条答案
按热度按时间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 Release rest api获取API-Test stage的环境id,然后调用更新发布环境rest api触发部署到API-Test。
因此,上述脚本可以实现在手动部署到QA阶段成功后触发API-Test阶段。