Azure DevOps Pipeline - 如何在阶段条件中引用循环中的值

问题描述 投票:0回答:1

尝试运行管道时,我在 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
azure-devops yaml azure-pipelines
1个回答
0
投票

我们可以使用 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 }}

© www.soinside.com 2019 - 2024. All rights reserved.