azure-devops - 获取构建开始时间、结束时间、结果、项目名称等?
问题描述
我计划为构建管道编写 PowerShell 任务。是否有用于构建开始时间、结束时间、结果、项目名称等的内置变量?
解决方案
是否有用于构建开始时间、结束时间、结果、项目名称等的内置变量?
恐怕没有这样的内置变量可以直接获取建筑开始时间、结束时间、结果、项目名称等。
正如您可以看到预定义变量的综合列表,没有这样的内置变量。
为了获得它们的价值,我们需要使用 PowerShell 和 Rest API:
https://docs.microsoft.com/en-us/rest/api/azure/devops/build/builds/get?view=azure-devops-rest-5.1
powershell脚本:
$url = "https://dev.azure.com/{organization}/{project}/_apis/build/builds/{buildId}?api-version=5.1"
$buildPipeline= Invoke-RestMethod -Uri $url -Headers @{
Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
} -Method Get
$starttime= $buildPipeline.startTime
Write-Host This is start time: $starttime
$Endtime= $buildPipeline.finishTime
Write-Host This is end time: $Endtime
$result= $buildPipeline.result
Write-Host This is build result: $result
$projectname= $buildPipeline.definition.project.name
Write-Host This is project name: $projectname
结果:
更新:
所以我需要为 rest api 调用创建另一个管道并从我的构建管道触发它?BTW,怎么触发呢?
是的,您需要为 rest api 调用创建另一个管道。要触发它,您可以添加 CallAPI build 作为构建完成:
在这种情况下,当构建管道完成时,它会触发 rest api 构建。
如何将 buildId 传递给新管道?
我们可以使用Builds - List API with definitions 参数来列出指定构建定义的构建 ID,例如:
https://dev.azure.com/{organization}/{project}/_apis/build/builds?api-version=5.1&definitions={DefinitionId}
然后我们可以得到第一个 build id,然后我们可以使用Logging 命令将该 id 设置为 ENV 变量:</p>
Write-Host ("##vso[task.setvariable variable=testvar2]testvalue2")
在这种情况下,我们可以在下一个任务中获取该 ID。
希望这可以帮助。
推荐阅读
- java - 在布局文件的 Imageview 中获取空指针异常
- node.js - 如何通过 req.body 将对象数组发送到节点/猫鼬
- c - 由于排序功能导致的分段错误
- python-3.x - Python3:连接到 Windows 时 paramiko_expect 的 SSHClientInteraction 输出不正确
- php - 如何在 PHP 中清理搜索栏字符串
- c# - c#如何用多个字符替换一个字符
- javascript - Knex 插入多条记录只返回插入的第一条记录
- ios - UITapGestureRecognizer 未触发
- python - 无法通过 OpenCV dnn 模块显示 YOLO 结果
- python - 是否可以检查出站 https 流量?