代码之家  ›  专栏  ›  技术社区  ›  Andy

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

  •  0
  • Andy  · 技术社区  · 5 年前

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

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

    “1.2.3.$[SetBuildNumber.updatedCounter]”

    我做错了什么?

    0 回复  |  直到 5 年前
        1
  •  0
  •   qbik    5 年前

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

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

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

    如果引用发生在不同的阶段或作业中,则语法有点 more complex .

    推荐文章