![](/img/trans.png)
[英]How to reference an ARM Template hosted in GitHub in an Azure DevOps Pipeline?
[英]Azure Devops pipeline , way to know when pipeline is done , using self hosted agent
我有一个 Azure 管道,我使用它调用它 azure rest API
https://dev.azure.com/xxx/xxx_connection/_apis/pipelines/2/runs
一切正常,我将源文件从安装自托管 Linux 代理发送到 azure,并将它们编译回自托管 Linux 代理。
我的问题是如何知道管道何时在托管自托管 Linux 代理的服务器中完成?
有回调吗? 或 API 我可以调用并查询管道作业是否完成?
或者只是在我接受获取编译产品的目录上做 while 循环? 我想避免的最后一个选项。
您可以使用Runs - Get API:
GET https://dev.azure.com/{organization}/{project}/_apis/pipelines/{pipelineId}/runs/{runId}?api-version=6.1-preview.1
并在响应中检查result
(应该succeeded
)。
当您使用您提到的 API(在响应中)调用管道时,您可以获得runId
。
您可以每 30 秒轮询一次管道以了解您的构建状态,脚本将在状态成功后退出。
$user="$(USER)"
$token="$(TOKEN)"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))
$buildInfo = ( Invoke-RestMethod -Method Get -UseDefaultCredentials -Uri "https://tfs.com/tfs/Organization/Project/_apis/build/builds/${buildID}?api-version=6.1-preview.6" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} )
Write-Host "Build URL : " "https://tfs.com/tfs/Organization/Project/_build/results?buildId=$buildID"
while($buildInfo.status -eq "inProgress" -or $buildInfo.status -eq "notStarted") # keep checking till build completed
{
Write-Output "Build is $($buildInfo.status) Sleep for 30 seconds."
Start-Sleep -Seconds 30 # Start sleep for 30 seconds
$buildInfo = ( Invoke-RestMethod -Method Get -UseDefaultCredentials -Uri "https://tfs.com/tfs/Organization/Project/_apis/build/builds/${buildID}?api-version=6.1-preview.6" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} )
}
Write-Output "Build Status : $($buildInfo.status)" # print build status
Write-Output "Build Result : $($buildInfo.result)" # print build result
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.