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

标签 azure azure-devops azure-pipelines

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

管道图片截图

1

我已经查看了 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 ”。 (本示例涉及的任务步骤请引用以下截图) enter image description here

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])")
}

enter image description here

3.添加另一个PowerShell任务并运行以下命令来检查 定义 TaskStep 变量:

gci  env:* | Where-Object Name -like TaskStep* | sort-object name

enter image description here enter image description here

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)

enter image description here

关于任务步骤名称的 Azure DevOps 管道变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74996557/

相关文章:

azure - 如何删除构建管道和发布管道?

Azure DevOps 构建管道 : CI triggers not working on PR merge to master when PR set to none

git - stash VSTS (VisualStudio.com) GIT 分支

azure - Azure SQL DW 中的 BroadcastMove

azure - 本地目录扩展属性将包含在 token 中的核心声明中

azure - 如何使用 azure DevOps 在单个应用程序服务中部署多个 .net core webjob?

azure-devops - Azure DevOps : How to add automated integration test during release pipeline

azure-devops - 如何下载“运行管道”对话框中指定的工件?

msbuild - 使用变量提取 MSDeploy Zip 包

c# - 如何从 Microsoft.Azure.Management.Fluent api 方法获得成功响应