在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。
我有一个 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。