首页 > 解决方案 > 获取构建开始时间、结束时间、结果、项目名称等?

问题描述

我计划为构建管道编写 PowerShell 任务。是否有用于构建开始时间、结束时间、结果、项目名称等的内置变量?

标签: azure-devopsazure-pipelinesazure-pipelines-build-task

解决方案


是否有用于构建开始时间、结束时间、结果、项目名称等的内置变量?

恐怕没有这样的内置变量可以直接获取建筑开始时间、结束时间、结果、项目名称等。

正如您可以看到预定义变量的综合列表,没有这样的内置变量。

为了获得它们的价值,我们需要使用 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。

希望这可以帮助。


推荐阅读