在yaml中如何从powershell脚本获取输出变量的值然后将其传递给另一个模板

In yaml how to get value of output variable from powershell script then pass it to another template

我有一个 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]"

我做错了什么?

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

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

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

如果引用发生在不同的阶段或工作中,那么语法有点more complex