代码之家  ›  专栏  ›  技术社区  ›  Alexander S

在Azure DevOps yaml管道中划分变量时如何使用表达式

  •  1
  • Alexander S  · 技术社区  · 4 月前

    在Azure DevOps.yaml管道中定义变量时:

    variables:
      - name: environment
        value: "PROD"
    

    如何使用表达式动态设置表达式的值?

    我尝试过这样做(注意参数名称/值不是真实的):

    variables:
      ${{ if eq(parameters['PARAM'], 'VALUE') }}
        - name: environment
          value: "PROD"
    
    1 回复  |  直到 4 月前
        1
  •  2
  •   Scott Richards    4 月前

    使用变量的表达式可以通过几种方式实现。在我的示例中,我将定义一个名为 envName ,并动态创建一个名为 envCode 基于价值 envName .

    关于示例中的错误,需要注意的重要部分是 - 以及间距。了解如何在.yaml中格式化表达式的一个简单方法是,表达式后面的语句是否包含 - 首先,您的表达式还应包含 - 一开始。


    示例一 :

    parameters:
      - name: envName
        type: string
        values:
          - "Production"
          - "Development"
    
    variables:
      - name: envCode
        ${{ if eq(parameters['envName'], 'Production') }}:
          value: "PROD"
        ${{ elseif eq(parameters['envName'], 'Development') }}:
          value: "DEV"
        ${{ else }}:
          value: "INVALID"   
    

    示例二 :

    parameters:
      - name: envName
        type: string
        values:
          - "Production"
          - "Development"
    
    variables:
      ${{ if eq(parameters['envName'], 'Production') }}:
        envCode: "PROD"
      ${{ elseif eq(parameters['envName'], 'Development') }}:
        envCode: "DEV"
      ${{ else }}:
        envCode: "INVALID"
    

    示例三 :

    parameters:
      - name: envName
        type: string
        values:
          - "Production"
          - "Development"
    
    variables:
      - ${{ if eq(parameters['envName'], 'Production') }}:
        - name: envCode
          value: "PROD"
      - ${{ elseif eq(parameters['envName'], 'Development') }}:
        - name: envCode
          value: "DEV"
      - ${{ else }}:
        - name: envCode
          value: "INVALID"
    
    

    示例四 :变量文件

    parameters:
      - name: envName
        type: string
        values:
          - "Production"
          - "Development"
    
    variables:
      - template: .\environments-vars.yaml
        parameters:
          envName: ${{ parameters.envName}}
    
    

    这个 environments-vars.yaml 文件:

    parameters:
      - name: envName
    
    variables:
      ${{ if eq(parameters['envName'], 'Production') }}:
        envCode: "PROD"
      ${{ elseif eq(parameters['envName'], 'Development') }}:
        envCode: "DEV"
      ${{ else }}:
        envCode: "INVALID"