繁体   English   中英

Azure 任务步骤名称的 devops 管道变量

[英]Azure devops pipeline variable for a task step name

是否有可用于 Azure devops 管道任务步骤名称的变量,如下突出显示?

管道图像截图

1个

我查看了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任务来设置任务步骤变量:(在这个例子中我们定义了变量taskcountTaskStep$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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM