将变量传输到模板

时间:2020-10-20 10:02:22

标签: azure-pipelines azure-pipelines-yaml

我正在尝试将变量传输到模板。我试过了: $ {{variables.portalPath}} 和 $(portalPath)

但是不会传输任何值。如果我不使用变量,而只是使用字符串,那么它将起作用:

管道:

trigger:
- none

variables:
  - name: portalPath value:"sdfsdf"

extends:
  template: azure-pipelines-build-react-portal-template.yml
  parameters:
    portalPath: "I WOULD LIKE TO REPLACE THIS WITH VARIABLE"

模板:

parameters:
 - name: portalPath 
   type: string

steps:
  - script: echo ${{ parameters.portalPath }}

2 个答案:

答案 0 :(得分:0)

示例管道未正确声明变量值。

不确定输入问题时这是否只是一个错字,因为管道会因当前变量声明为预先失败:

variables:
  - name: portalPath value:"sdfsdf"

此模板对我有用:

variables:
  - name: portalPath
    value: "sdfsdf"

extends:
  template: my-template.yml
  parameters:
    portalPath: $(portalPath)

答案 1 :(得分:0)

在解释传递给portalPath的值时,运行时变量尚不可用。然后,template参数将收到运行时变量$(portalPath)。

与其以运行时语法 传递变量,而是使用表达式语法 ${{ variables.environment }}

Template.yml

parameters:

- name: portalPath # don't pass run-time variables

steps:
  - script: echo ${{ parameters.portalPath }}

azure-pipelines.yml

- stage: QA

  variables: 

    PortalPath : sdfsdf

  jobs:

  - template: azure-pipelines-build-react-portal-template.yml

    parameters:

      environment: ${{ variables.environment }} # use expression syntax

如果仍然不起作用。一种解决方法是在工作开始时(使用powershell或bash)在您的工作区中简单地引入一个新变量:

- powershell: Write-Host "##vso[task.setvariable variable=PortalPath ]${{ parameters.portalPath }}"

从那时起,您可以在后续步骤中使用$ {PortalPath}。

您还可以查看以下类似问题: