![](/img/trans.png)
[英]Get own Service Principal Name in an Azure DevOps Powershell pipeline task
[英]Azure devops pipeline variable for a task step name
是否有可用于 Azure devops 管道任务步骤名称的变量,如下突出显示?
管道图像截图
我查看了https://learn.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=classic上的预定义变量,但它们都不起作用/不合适。
根据您的描述,您希望使用管道变量来设置任务组名称。
恐怕没有这样的管道变量可以达到这个要求。
管道变量只会在管道运行时展开。 然后管道变量将更新任务名称。
当您在任务定义中设置变量时,它不能直接扩展。
解决方法是您可以在任务定义中对任务名称进行硬编码。 在这种情况下,它将显示预期的任务名称。
有关更多详细信息,您可以参考此文档: Define variables
由于您使用的是经典构建管道,您可以调用构建定义 REST API来获取任务步骤名称,然后使用日志命令 - SetVariable将任务名称设置为管道变量。 之后,您可以在管道的后续任务中使用定义的变量。
为此,请执行以下步骤:
1.在代理作业中启用选项“ Allow scripts to access 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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.