簡體   English   中英

如何在條件中訪問管道變量

[英]How to access pipeline variables in conditions

我有運行模板作為步驟之一的管道。

我需要使用兩個不同范圍的參數執行模板取決於管道變量之一的值。

例如,如果管道變量“mode”的值為“dev”,我需要一個作用域的運行模板,如果值為“stage”,則另一個作用域。

  - ${{ if eq(parameters.mode, 'dev') }}:
    - template: ../template.yaml
      parameters:
          mode: dev
          namespace: dev-namespace
          fqdn: dev-fqdn

    
  - ${{ if eq(variables.mode, 'staging') }}:
    - template: ../template.yaml
      parameters:
        mode: staging
        namespace: staging-namespace
        fqdn: staging-fqdn

您應該使用此語法${{ if eq(variables['mode'], 'staging') }}:

這取決於變量將在 at 讀入和使用的時間 還有更多可能的答案。 在此處輸入圖片說明

如果將這些用於將來執行模板,我建議使用條件並在單獨的 yml 變量文件中定義參數。

  condition:  eq('${{ variables.mode}}', 'staging)

這樣調用就只是

   job:
    condition:  eq('${{ variables.mode}}', 'staging')
    variables: staging.yml
    - template: ../template.yaml
      parameters:
        mode: ${{ variables.mode }}
        namespace: ${{ variables.namepsace }}
        fqdn: ${{ variables.fqdn }} 

staging.yml 看起來像:

variables:
   mode: staging
   namespace: staging-namespace
   fqdn: staging-fqdn

這樣,它的解耦性和可擴展性會降低一些,而不必每次都對其進行硬編碼。

1.如果您使用的是運行時參數,則可以使用以下格式:

trigger:
- master

parameters:
- name: mode
  displayName: Choose mode
  type: string
  default: dev
  values:
  - dev
  - staging

pool:
  vmImage: 'windows-latest'

steps:
  - ${{ if eq(parameters.mode, 'dev') }}:
    - template: template.yml
      parameters:
        mode: dev
  - ${{ if eq(parameters.mode, 'staging') }}:
    - template: template.yml
      parameters:
        mode: staging

有關更多詳細信息,您可以檢查參數以在運行時選擇模板

2.如果你直接使用yaml中定義的變量,請查看我的另一個示例:

trigger:
- master

variables:
  mode: staging

pool:
  vmImage: 'windows-latest'

stages:
- stage: Dev
  condition: eq(variables.mode, 'dev')
  jobs:
  - job:
    steps:
      - template: template.yml
        parameters:
          mode: dev

- stage: Staging
  condition: eq(variables.mode, 'staging')
  jobs:
  - job:
    steps:
      - template: template.yml
        parameters:
          mode: staging

我會推薦運行時參數方式,因為它更方便,更靈活。

更新1:

這是我的簡單template.yml文件,僅用於測試:

parameters:
- name: mode
  type: string
  default: default

steps:
- script: echo ${{ parameters.mode }}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM