將參數移至 YAML 檔案

已完成

在 Azure Pipelines 中,您可以使用 YAML 檔案將管線的設定定義為程式碼。 YAML 檔案中的參數可協助您重複使用管線,並讓程式碼保持乾淨。 在本單元中,您將了解如何將參數移至 YAML 檔案。

為何在 YAML 檔案中使用參數?

在 YAML 檔案中使用參數的優點:

  • 有助於重複使用管線設定。
  • 它可讓您將管線定義為程式碼,讓您追蹤一段時間的管線變更。
  • 它可讓程式碼保持乾淨且有條理。

將參數移至 YAML 檔案

您可以強制管線從特定範本延伸,以提高安全性。

在下列範例中,file parameters.yml 會定義參數 buildSteps,然後用於管線 azure-pipelines.yml。 在 parameters.yml 中,如果 buildStep 以指令碼步驟傳遞,則會遭到拒絕,而管線組建會失敗。

在您的存放庫,或範本的特定其他存放庫中建立名為 parameters.yml 的檔案。

使用 YAML 語法在此檔案中定義參數:

# File: parameters.yml
parameters:
- name: buildSteps # the name of the parameter is buildSteps
  type: stepList # data type is StepList
  default: [] # default value of buildSteps
stages:
- stage: secure_buildstage
  pool:
    vmImage: windows-latest
  jobs:
  - job: secure_buildjob
    steps:
    - script: echo This happens before code 
      displayName: 'Base: Pre-build'
    - script: echo Building
      displayName: 'Base: Build'

    - ${{ each step in parameters.buildSteps }}:
      - ${{ each pair in step }}:
          ${{ if ne(pair.value, 'CmdLine@2') }}:
            ${{ pair.key }}: ${{ pair.value }}       
          ${{ if eq(pair.value, 'CmdLine@2') }}: 
            # Step is rejected by raising a YAML syntax error: Unexpected value 'CmdLine@2'
            '${{ pair.value }}': error         

    - script: echo This happens after code
      displayName: 'Base: Signing'

建立名為 azure-pipelines.yml 的檔案,並參考 parameters.yml 檔案:

# File: azure-pipelines.yml
trigger:
- main

extends:
  template: parameters.yml
  parameters:
    buildSteps:  
      - bash: echo Test #Passes
        displayName: succeed
      - bash: echo "Test"
        displayName: succeed
      # Step is rejected by raising a YAML syntax error: Unexpected value 'CmdLine@2'
      - task: CmdLine@2
        inputs:
          script: echo "Script Test"
      # Step is rejected by raising a YAML syntax error: Unexpected value 'CmdLine@2'
      - script: echo "Script Test"

您可以在這裡看到管線是從範本 parameters.yml 延伸而來。 參數 buildSteps 會傳遞至範本。 範本會檢查參數 buildSteps 的值是否為 stepList 類型。 如果是,管線會繼續。 如果不是,管線就會失敗。

嘗試執行管線。 您應該會看見下列錯誤:

Screenshot of Azure Pipelines showing the step rejected by raising a YAML syntax error unexpected value.

您可以在從範本延伸時,新增必要的範本核准,以提高安全性。

挑戰自己

使用 YAML 範本檔案中的參數建立管線,以根據使用者選擇的環境,將 Web 應用程式部署到不同的區域。

如需參數和範本的詳細資訊,請參閱: