Verschieben von Parametern in eine YAML-Datei

Abgeschlossen

In Azure Pipelines können Sie YAML-Dateien verwenden, um die Konfiguration Ihrer Pipeline als Code zu definieren. Parameter in YAML-Dateien helfen Ihnen, die Pipeline wiederzuverwenden und den Code sauber zu halten. In dieser Lerneinheit erfahren Sie, wie Sie Parameter in eine YAML-Datei verschieben.

Gründe für die Verwendung von Parametern in YAML-Dateien

Vorteile der Verwendung von Parametern in YAML-Dateien:

  • Die Pipelinekonfiguration kann leichter wiederverwendet werden.
  • Sie können die Pipeline als Code definieren, sodass Sie Pipelineänderungen im Zeitverlauf nachverfolgen können.
  • Der Code bleibt sauber und strukturiert.

Verschieben von Parametern in eine YAML-Datei

Sie können erzwingen, dass eine Pipeline von einer bestimmten Vorlage aus erweitert wird, um die Sicherheit zu erhöhen.

Im folgenden Beispiel definiert die Datei „parameters.yml“ den Parameter „buildSteps“, der anschließend in der Pipeline „azure-pipelines.yml“ verwendet wird. Wenn in „parameters.yml“ ein buildStep mit einem Skriptschritt übergeben wird, wird er abgelehnt, und der Pipelinebuild schlägt fehl.

Erstellen Sie eine Datei namens parameters.yml in Ihrem eigenen Repository oder in einem anderen Repository, das für Ihre Vorlagen spezifisch ist.

Definieren Sie Ihre Parameter in dieser Datei mithilfe der YAML-Syntax:

# 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'

Erstellen Sie eine Datei mit dem Namen azure-pipelines.yml, und verweisen Sie auf die Datei 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"

Hier sehen Sie, dass die Pipeline aus der Vorlage parameters.yml erweitert wird. Der Parameter buildSteps wird an die Vorlage übergeben. Die Vorlage überprüft, ob der Wert des Parameters buildSteps vom Typ stepList ist. In diesem Fall wird die Pipeline fortgesetzt. Andernfalls schlägt die Pipeline fehl.

Versuchen Sie, die Pipeline auszuführen. Sie sollten folgenden Fehler erhalten:

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

Sie können die Sicherheit erhöhen, indem Sie beim Erweitern aus einer Vorlage eine erforderliche Vorlagengenehmigung hinzufügen.

Probieren Sie es aus!

Erstellen Sie eine Pipeline mithilfe von Parametern aus einer YAML-Vorlagendatei, die eine Web-App basierend auf der von Benutzer*innen gewählten Umgebung in verschiedenen Regionen bereitstellt.

Weitere Informationen zu Parametern und Vorlagen finden Sie hier: