【问题标题】:Using if else conditions within a Azure devops yaml pipeline template在 Azure devops yaml 管道模板中使用 if else 条件
【发布时间】:2022-01-12 14:04:13
【问题描述】:

基本上,我试图在 yaml 模板中使用 if else 逻辑,而不是调用者管道。

我有以下两条管道 azure-caller.yml 和 template.yaml

azure-caller.yml

parameters:
  - name: test
    displayName: 'select true or false' 
    values:
      - true
      - false
  

variables:
- name: test-true
  ${{ if eq(parameters.test, 'true') }}:
      value: false
  ${{ elseif eq(parameters.test, 'false') }}:
      value: true

stages:
- template: job-templates/template.yml
  parameters:
    testrue: $(test-true)

template.yml

parameters:
  testrue: test_true
  
stages:
  - stage: A
    jobs:
    - job: JA
      steps:
      - script: |
          echo "Reverted value is" ${{ parameters.testrue }}
          
        name: DetermineResult

如何在 template.yml 而不是 azure-caller.yml 中移动 if else 逻辑?您的意见会有所帮助。谢谢

【问题讨论】:

    标签: azure-devops azure-pipelines azure-devops-yaml


    【解决方案1】:

    下面的管道应该可以做到这一点,但模板中变量 test-true 的范围将仅限于阶段:A

    azure-caller.yml

    parameters:
      - name: test
        displayName: 'select true or false' 
        values:
          - true
          - false
    
    stages:
    - template: job-templates/template.yml
      parameters:
        testrue: ${{ parameters.test }}
    

    template.yml

    parameters:
      testrue: default
    
    stages:
      - stage: A
        variables:
        - name: test-true
          ${{ if eq(parameters.testrue, 'true') }}:
            value: NewVauleForTrueParam
          ${{ elseif eq(parameters.testrue, 'false') }}:
            value: NewVauleForFalseParam
        jobs:
        - job: JA
          steps:
          - script: |
              echo "Echo value is" $(test-true)
    

    结果

    【讨论】:

    • Azure -caller.yml 工作正常,这是 template.yml 的问题,我想在 template.yml 中移动 if else 逻辑,我该怎么做?
    • 为什么需要 if else 逻辑?当您可以直接将 true 和 false 作为参数传递时。
    • 好的,用例与上面的例子有点不同,我正在做一些配置,我不想让用户能够编辑 template.yml 而他们可以使用包装器,即 azure-caller.yml
    • 我已经更新了这个问题,即恢复了逻辑,但这并不重要,因为它不是我正在做的确切用例,而是一个例子,我想要了解的是如何能够使用 if else 参数内部的逻辑,所以我可以对通过调用者管道传递的参数进行配置(即 azure-pipeline.yml"
    • 这行得通!
    猜你喜欢
    • 2021-12-07
    • 1970-01-01
    • 2020-03-15
    • 2020-05-28
    • 1970-01-01
    • 2020-09-15
    • 2022-08-10
    • 1970-01-01
    • 2022-09-23
    相关资源
    最近更新 更多