如果新构建的总运行时间更多,如何在 Azure 中获取通知
How to get notification in Azure in case total runtime is more for a new build
我在 Azure DevOps 中有一个管道,其中每晚执行 Gatling 加载测试场景。如果上次的总运行时间比上一次多(例如,2020 年 3 月 31 日总运行时间为 10 分钟,2020 年 4 月 1 日总运行时间为 12 分钟,我如何才能在 Azure 中(以及电子邮件中)收到通知 - 在此如果我想收到通知)?
您可以创建一个新的构建管道,该管道仅由测试管道的 Build Completion 触发。
并添加一个脚本任务来调用Build rest api to this new pipeline to calculate the total runtime of the builds. And add a Send email task在持续时间大于上一次构建的情况下向您发送电子邮件。详细步骤如下。
1、设置新管道并配置构建完成触发器
转到获取源 --> 勾选不同步源以跳过检出源
点击代理作业-->勾选允许脚本访问OAuth令牌允许脚本调用restapi
转到触发器选项卡-->构建完成-->单击添加以select 您的测试管道 触发构建
通过设置构建完成触发构建,当您的测试管道完成时将触发这个新管道。
2、添加脚本任务调用Build rest api并计算持续时间。和 store the result to a variable。检查下面的 powershell 脚本:
$url = "$(System.TeamFoundationCollectionUri)$(System.TeamProject)/_apis/build/builds/$(Build.TriggeredBy.BuildId)?api-version=5.1"
echo $url
$result = Invoke-RestMethod -Uri $url -Headers @{authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"} -ContentType "application/json" -Method get
# calculate the totaltime of the newest build
$time = [datetime]$result.finishTime - [datetime]$result.startTime
$thisBuild= $time.TotalMinutes
# get the last build
$lasturl = "$(System.TeamFoundationCollectionUri)$(System.TeamProject)/_apis/build/builds?definitions=$(Build.TriggeredBy.DefinitionId)&resultFilter=succeeded&`$top=2&api-version=5.1"
$lastResult =Invoke-RestMethod -Uri $lasturl -Headers @{authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"} -ContentType "application/json" -Method get
#Caculate the totaltime of the last build
$lasttime = [datetime]$lastResult.value[1].finishTime - [datetime]$lastResult.value[1].startTime
$lastBuild = $lasttime.TotalMinutes
#Store the result to varialbe isLonger
if($thisBuild -ge $lastBuild ){ echo "##vso[task.setvariable variable=isLonger]True" }
3、添加发送邮件任务发送邮件。并将自定义条件设置为 eq(variables.isLonger, 'True')
。这样这个任务只有在总时间比较大的时候才会执行。
希望以上内容对您有所帮助!
我在 Azure DevOps 中有一个管道,其中每晚执行 Gatling 加载测试场景。如果上次的总运行时间比上一次多(例如,2020 年 3 月 31 日总运行时间为 10 分钟,2020 年 4 月 1 日总运行时间为 12 分钟,我如何才能在 Azure 中(以及电子邮件中)收到通知 - 在此如果我想收到通知)?
您可以创建一个新的构建管道,该管道仅由测试管道的 Build Completion 触发。
并添加一个脚本任务来调用Build rest api to this new pipeline to calculate the total runtime of the builds. And add a Send email task在持续时间大于上一次构建的情况下向您发送电子邮件。详细步骤如下。
1、设置新管道并配置构建完成触发器
转到获取源 --> 勾选不同步源以跳过检出源
点击代理作业-->勾选允许脚本访问OAuth令牌允许脚本调用restapi
转到触发器选项卡-->构建完成-->单击添加以select 您的测试管道 触发构建
通过设置构建完成触发构建,当您的测试管道完成时将触发这个新管道。
2、添加脚本任务调用Build rest api并计算持续时间。和 store the result to a variable。检查下面的 powershell 脚本:
$url = "$(System.TeamFoundationCollectionUri)$(System.TeamProject)/_apis/build/builds/$(Build.TriggeredBy.BuildId)?api-version=5.1"
echo $url
$result = Invoke-RestMethod -Uri $url -Headers @{authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"} -ContentType "application/json" -Method get
# calculate the totaltime of the newest build
$time = [datetime]$result.finishTime - [datetime]$result.startTime
$thisBuild= $time.TotalMinutes
# get the last build
$lasturl = "$(System.TeamFoundationCollectionUri)$(System.TeamProject)/_apis/build/builds?definitions=$(Build.TriggeredBy.DefinitionId)&resultFilter=succeeded&`$top=2&api-version=5.1"
$lastResult =Invoke-RestMethod -Uri $lasturl -Headers @{authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"} -ContentType "application/json" -Method get
#Caculate the totaltime of the last build
$lasttime = [datetime]$lastResult.value[1].finishTime - [datetime]$lastResult.value[1].startTime
$lastBuild = $lasttime.TotalMinutes
#Store the result to varialbe isLonger
if($thisBuild -ge $lastBuild ){ echo "##vso[task.setvariable variable=isLonger]True" }
3、添加发送邮件任务发送邮件。并将自定义条件设置为 eq(variables.isLonger, 'True')
。这样这个任务只有在总时间比较大的时候才会执行。
希望以上内容对您有所帮助!