我目前正试图为服务架构部署创建一个天蓝色发布管道。对于包含多个作业/任务的测试环境,我有一个单独的阶段。
在成功部署到环境之后,我们将运行集成测试和冒烟测试。
在烟雾测试之后,我插入了一个手动干预任务,允许Devs选择运行回归测试(恢复)或退出进程(拒绝)。如果所有以前的任务(部署、集成和冒烟)都通过,并且手动干预被拒绝,I希望将发布管道标记为成功。
如果手动干预是用简历响应的,那么以下任务的结果应该决定发布管道的结果。
我找不到这方面的例子,因此觉得这是不正确的做法。一个更合适的做法是引入一个中间环境,作为成功的烟雾测试的结果,在此环境下进行回归测试?
发布于 2019-06-06 12:55:26
通过设计,当用户拒绝干预时,发布状态就变成了“失败”。
我想解决这个问题的办法是:
1)用户总是“恢复”干预,但“评论”会有所不同。
2)之后,在回归测试之前,添加一个PowerShell任务来检查前面的注释,并在注释为“运行测试”的情况下设置一个值为"true“的新变量。
3)在回归测试任务中,将一个定制条件设置为只在新变量等于"true“时才运行。
例如,如果批准继续使用“运行测试”进行干预,则将执行Regresstions测试。因此,您需要一个PowerShell脚本来检查批准所写的内容,如果审批文本是“运行测试”,我们将设置一个新变量runTest
= true
$url = $(System.TeamFoundationServerUri)$(System.TeamProject)/_apis/Release/releases/$(Release.ReleaseId)/manualinterventions?api-version=5.0
$header = @{ Authorization = "Bearer $env:System_AcessToken" }
$release = Invoke-RestMethod -Uri $url -Method Get -ContentType application/json -Headers $header
$comment = $release.value.comments
if($comment -eq "Run Tests")
{
Write-Host "##vso[task.setvariable variable=runTest]true"
}
然后,在回归测试任务中,只有当runTest
变量是true
时,才需要设置一个自定义条件来运行
and(succeeded(), eq(variables['runTests'], 'true'))
现在,如果批准写了“运行测试”,那么测试将被执行:
如果没有,测试将被跳过,但是发布将“成功”:
注意:对于PowerShell脚本,您需要悠乐脚本访问OAuth令牌(选中代理作业选项中的复选框):
https://stackoverflow.com/questions/56461391
复制相似问题