Déplacer des paramètres dans un fichier YAML

Effectué

Dans Azure Pipelines, vous pouvez utiliser des fichiers YAML pour définir la configuration de votre pipeline en tant que code. Les paramètres dans les fichiers YAML vous aident à réutiliser le pipeline et à nettoyer le code. Dans cette unité, vous allez apprendre à déplacer des paramètres dans un fichier YAML.

Pourquoi utiliser des paramètres dans des fichiers YAML ?

Avantages de l’utilisation de paramètres dans des fichiers YAML :

  • Il permet de réutiliser la configuration du pipeline.
  • Il vous permet de définir le pipeline en tant que code, ce qui vous permet de suivre les modifications du pipeline au fil du temps.
  • Il conserve le code clair et organisé.

Déplacer des paramètres dans un fichier YAML

Vous pouvez imposer qu'un pipeline s'étend depuis un modèle spécifique pour augmenter la sécurité.

Dans l’exemple suivant, le fichier parameters.yml définit le paramètre buildSteps, qui est ensuite utilisé dans le pipeline azure-pipelines.yml. Dans parameters.yml, si une buildStep est passée avec une étape de script, elle est rejetée et la génération du pipeline échoue.

Créez un fichier nommé parameters.yml dans votre référentiel ou un autre dépôt spécifique à vos modèles.

Définissez vos paramètres dans ce fichier à l’aide de la syntaxe 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'

Créez un fichier nommé azure-pipelines.ymlet référencez le parameters.yml fichier :

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

Ici, vous pouvez voir que le pipeline est étendu à partir du modèle parameters.yml. Le paramètre buildSteps est passé au modèle. Le modèle vérifie si la valeur du paramètre buildSteps est un stepList type. Si c’est le cas, le pipeline se poursuit. Si ce n’est pas le cas, le pipeline échoue.

Essayez d’exécuter le pipeline. L’erreur suivante doit s’afficher :

Capture d’écran d’Azure Pipelines montrant l’étape rejetée en générant une valeur inattendue d’erreur de syntaxe YAML.

Vous pouvez augmenter la sécurité en ajoutant une approbation de modèle requise lors de l’extension à partir d’un modèle.

Défiez-vous-même

Créez un pipeline à l’aide de paramètres à partir d’un fichier de modèle YAML qui déploie une application web dans différentes régions en fonction du choix de l’environnement d’un utilisateur.

Pour plus d’informations sur les paramètres et les modèles, consultez :