AzDo 构建管道以根据条件参数运行步骤模板

时间:2021-05-06 18:01:10

标签: azure-devops

我有以下 main.yml 构建管道,

parameters:
  - name: ListOfEnvironments
    type: object
    default:
      - dev
      - tst
      - acc
      - prd

stages:
- ${{ each value in parameters.ListOfEnvironments }}:
    - template: templates/stage.yml
      parameters:
        environment_name: ${{ value }} 

现在上面的模板可以工作并且能够调用不同的特定于环境的 stage.yml 模板。 现在在 stage.yml 中我有以下结构:

stages:
  - stage: deploy_to_env
    displayName: Deploy
    jobs:
      - job: deploy
        displayName: Deploy
        variables:
          - name: environment
            value: ${{ parameters.environment_name }}
        steps:
        ${{ if eq(parameters.environment_name, "dev") }}:
        template: ../steps_templates/dev_steps.yml
        ${{ if eq(parameters.environment_name, "acc") }}:
        template: ../steps_templates/acc_steps.yml

我无法根据条件调用步骤模板。另外,我试着像下面这样

${{ if eq(parameters.environment_name, "dev") }}:
    steps:
    - template: ../steps_templates/dev_steps.yml
    ${{ if eq(parameters.environment_name, "acc") }}:
    steps:
    - template: ../steps_templates/acc_steps.yml

它不起作用,有没有人知道如何根据条件参数调用步骤。

更新: 我终于设法像这样走得更远,它识别了 env 变量,但现在它抱怨 Unrecognized value: '"dev"'. Located at position 33 within expression: eq(parameters.environment_name, dev)

steps:
        - ${{ if eq(parameters.environment_name, "dev") }}:
          - template: ../steps_templates/dev_steps.yml
        - ${{ if eq(parameters.environment_name, "acc") }}:
          - template: ../steps_templates/acc_steps.yml

在将 " 更改为 ' 后,它现在可以工作了。现在一切都好了。

1 个答案:

答案 0 :(得分:0)

可能有人会发现这有帮助: 下面的布局可以正常工作:

        steps:
        - ${{ if eq(parameters.environment_name, 'dev') }}:
          - template: ../steps_templates/dev_steps.yml
        - ${{ if eq(parameters.environment_name, 'acc') }}:
          - template: ../steps_templates/acc_steps.yml