首页 > 解决方案 > 在 yaml 中如何从 powershell 脚本获取输出变量的值,然后将其传递给另一个模板

问题描述

我有一个 Azure DevOps Yaml 构建管道。yaml 文件调用 PowerShell 脚本,如下所示:

- task: PowerShell@1
  name: SetBuildNumber
  displayName: 'Set Build Number'
  inputs:
    scriptName: '$(Build.SourcesDirectory)\BuildScripts\UpdateBuildNumber.ps1'

这个 powershell 脚本应该输出一个变量的值。这是我在那里的:

Write-Output '##vso[task.setvariable variable=updatedCounter;isOutput=true]$(updatedCounter)'

&updatedCounter是该脚本中的一个变量,它被设置为一个数字。我希望调用它的 yaml 文件能够在发送到另一个文件的参数中使用该数字。这就是我所拥有的:

- template: ${{ variables.buildtemplate }}
  parameters:
    BuildVersion: ${{ variables.BuildVersion }}$[SetBuildNumber.updatedCounter]

但是传递给模板的是与字符串“$[SetBuildNumber.updatedCount]”连接的 BuildVersion 变量的值。所以它最终是这样的,例如,其中的值为variables.BuildVersion“1.2.3。”:

“1.2.3.$[SetBuildNumber.updatedCounter]”

我究竟做错了什么?

标签: powershellazure-devopsyamlpipeline

解决方案


输出变量可以通过宏语法: 引用$(),所以它应该是:

BuildVersion: ${{ variables.BuildVersion }}$(SetBuildNumber.updatedCounter)

这仅在您引用来自同一阶段和同一作业的输出变量时才有效。在这种情况下,您也可以删除isOutput=true并简单地使用$(updatedCounter).

如果引用发生在不同的阶段或作业中,则语法会更复杂一些。


推荐阅读