我的
pipleine.yaml
延伸了另一个template.yaml
。模板中有一个参数 prePlanSteps
可以让我向母版添加步骤。
我的测试脚本很简单:
echo region = ${{ env.region }}
如果我直接将其作为内联步骤放置,则此方法有效。但是,如果我尝试将相同的代码传递给
prePlanSteps
参数,则会失败:
Unrecognized value: 'env'.
我显然必须以特定的格式/语法传递它,以使其在正确的时间/地点解析,但我不知道如何实现。
template.yaml
:
parameters:
- name: envList
type: object
- name: prePlanSteps
type: stepList
default: []
- ${{ each env in parameters.envList }}:
- stage: "${{ env.name }}Build"
variables:
jobs:
- job: 'Plan'
steps:
- bash: |
echo region = ${{ env.region }}
- ${{ parameters.prePlanSteps }}
pipeline.yaml
:
extends:
template: template.yml
parameters:
envList:
- name: dev
region: myRegion
prePlanSteps:
- bash: |
echo region = ${{ env.region }}
displayName: preplansteps_test
name: preplansteps_test
看起来它正在尝试在扩展之前的编译过程中找到您的变量
pipeline.yaml
。您可以切换到变量并将它们传递给模板:
模板
parameters:
- name: envList
type: object
- name: prePlanSteps
type: stepList
default: []
stages:
- ${{ each env in parameters.envList }}:
- stage: "${{ env.name }}Build"
variables:
- name: my.env
value: ${{ env.name }}
- name: my.region
value: ${{ env.region }}
jobs:
- job: 'Plan'
steps:
- bash: |
echo region = ${{ env.region }}
- ${{parameters.prePlanSteps}}
管道
extends:
template: template.yml
parameters:
envList:
- name: dev
region: devreg
- name: test
region: testreg
prePlanSteps:
- bash: |
echo extented region = $(my.region)
echo extented env = $(my.env)
displayName: preplansteps_test
name: preplansteps_test