是否有可用于 Azure DevOps 管道任务步骤名称的变量(如下突出显示)?
管道图片截图
我已经查看了 https://learn.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=classic 处的预定义变量但它们都不起作用/不合适。
最佳答案
由于您使用的是经典构建管道,因此您可以调用 build definition REST API获取任务步骤名称,然后使用 logging commands - SetVariable 将任务名称设置为管道变量。之后,您可以在管道中的后续任务中使用定义的变量。
要执行此操作,请执行以下步骤:
1.在代理作业中启用选项“允许脚本访问 OAuth token
”。 (本示例涉及的任务步骤请引用以下截图)
2.添加 PowerShell 任务以通过运行以下命令来设置任务步骤变量
以下脚本:(在此示例中,我们定义了变量 taskcount
和 TaskStep$i
)
$url = "$($env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI)$env:SYSTEM_TEAMPROJECTID/_apis/build/definitions/$env:SYSTEM_DEFINITIONID"
$result= Invoke-RestMethod -Uri $url -Headers @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"}`
$tasks = $result.process.phases.steps.displayName
$count = $tasks.count
# Set task count variable
Write-Host "##vso[task.setvariable variable=taskcount]$count"
# Set task step variables
For($i=0;$i -lt $tasks.Length; $i++) {
Write-host $($tasks[$i])
Write-Host ("##vso[task.setvariable variable=TaskStep$i]$($tasks[$i])")
}
3.添加另一个PowerShell任务并运行以下命令来检查
定义 TaskStep
变量:
gci env:* | Where-Object Name -like TaskStep* | sort-object name
4.在管道中的后续任务中使用该变量。例如使用 PowerShell 任务打印变量值:
Write-Host "TaskCount:" $(taskcount)
Write-Host "TaskStep0:" $(TASKSTEP0)
Write-Host "TaskStep1:" $(TASKSTEP1)
Write-Host "TaskStep2:" $(TASKSTEP2)
Write-Host "TaskStep3:" $(TaskStep3)
Write-Host "TaskStep4:" $(TaskStep4)
Write-Host "TaskStep5:" $(TaskStep5)
Write-Host "TaskStep6:" $(TaskStep6)
Write-Host "TaskStep7:" $(TaskStep7)
Write-Host "TaskStep8:" $(TaskStep8)
关于任务步骤名称的 Azure DevOps 管道变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74996557/