尝试运行管道时,我在 Azure DevOps 中收到以下错误。我试图引用阶段条件内每个循环的值。我做错了什么?
代码-
- ${{ each env in split(variables.environments, ',') }}:
- stage: deploy${{ env }}Stage
displayName: "Deploy ${{ env }}
dependsOn:
- dockerStage
condition: ${{ eq(parameters.deployTo${{ env }}, true) }}
错误-
Unexpected symbol: 'deployTo${{'. Located at position 15 within expression: eq(parameters.deployTo${{ env
我们可以使用 format 函数 将
${{ env }}
附加到部分参数名称,以便管道能够构造完整的参数名称进行评估。
此外,还有两个选项供您修改管道。
使用阶段条件属性
condition: ${{ eq(parameters[format('deployTo{0}', env)], true) }}
parameters:
- name: deployToTEST
type: boolean
default: true
- name: deployToQA
type: boolean
default: true
- name: deployToPROD
type: boolean
default: true
variables:
- name: environments
value: Test,QA,PROD
stages:
- stage: dockerStage
jobs:
- job: dockerJob
steps:
- script: |
docker --version
- ${{ each env in split(variables.environments, ',') }}:
# - ${{ if eq(parameters[format('deployTo{0}', env)], true) }}:
- stage: deploy${{ env }}Stage
displayName: "Deploy ${{ env }}"
dependsOn:
- dockerStage
condition: ${{ eq(parameters[format('deployTo{0}', env)], true) }}
jobs:
- job:
steps:
- script: |
echo environment is ${{ env }}
使用条件插入
- ${{ if eq(parameters[format('deployTo{0}', env)], true) }}:
parameters:
- name: deployToTEST
type: boolean
default: true
- name: deployToQA
type: boolean
default: true
- name: deployToPROD
type: boolean
default: true
variables:
- name: environments
value: Test,QA,PROD
stages:
- stage: dockerStage
jobs:
- job: dockerJob
steps:
- script: |
docker --version
- ${{ each env in split(variables.environments, ',') }}:
- ${{ if eq(parameters[format('deployTo{0}', env)], true) }}:
- stage: deploy${{ env }}Stage
displayName: "Deploy ${{ env }}"
dependsOn:
- dockerStage
# condition: ${{ eq(parameters[format('deployTo{0}', env)], true) }}
jobs:
- job:
steps:
- script: |
echo environment is ${{ env }}