Photo par Fleur

Comment utiliser des variables et des paramètres dans vos templates YAML avec Azure DevOps

Conseils rapides sur la façon d'utiliser correctement les variables dans vos templates.

Créé par Damien Aicheh le 10 February, 2021 · 4 mins

Dans l’article précédent nous vous avons montré les bases de l’utilisation de variables dans vos pipelines Azure DevOps. Aujourd’hui, nous irons plus loin et examinerons différentes manières d’utiliser des variables et des paramètres dans des templates réutilisables.

Utilisation des variables

Pour les besoins de ce tutoriel, prenons cet extrait de template:


variables:
- name: minimumVersionNumber
  value: 1000

steps:
# ...steps before

- task: Bash@3
  displayName: 'Calculate a build number'
  inputs:
    targetType: 'inline'
    script: |
      echo Computing with $(minimumVersionNumber) or ${{ variables.minimumVersionNumber }}

# ...steps after

Dans cet exemple, nous avons une task shell de base Bash@3 qui calcule le numéro de version de build de notre application. Étant donné que nous définissons le minimumVersionNumber dans l’objet variables par défaut d’Azure DevOps, il existe deux options pour y accéder:

  • $(minimumVersionNumber): Cette notation est accessible n’importe où dans votre template
  • ${{ variables.minimumVersionNumber }}: Ceci n’est accessible qu’au même niveau de la définition des variables

Passer des paramètres à un template

Cela fait, nous allons créer un nouveau template dans un fichier appelé: compute-build-number.yml pour pouvoir réutiliser cette task dans différents projets:


# compute-build-number.yml

# Define parameter first way:
parameters:
  minVersion: 0

# Or second way:
parameters:
- name: minVersion
  type: number
  value: 0

steps:
- task: Bash@3
  displayName: 'Calculate a build number'
  inputs:
    targetType: 'inline'
    script: |
      echo Computing with ${{ parameters.minVersion }}

Comme vous pouvez le voir, la minVersion est définie dans l’objet parameters, pour y accéder, vous devez utiliser ${{ parameters.minVersion }}. Vous pouvez appeler l’objet parameters comme vous le souhaitez, le but est de définir tous les paramètres nécessaires au fonctionnement de ce template. Cela sera également utile lorsque quelqu’un d’autre voudra connaître les paramètres nécessaires à fournir pour pouvoir réutiliser ce template.

Maintenant, mettons à jour notre pipeline pour utiliser ce template:


variables:
- name: minimumVersionNumber
  value: 1000

steps:
# ...steps before

- template: compute-build-number.yml
  parameters:
    minVersion: $(minimumVersionNumber)

# OR:
  
- template: compute-build-number.yml
  parameters:
    minVersion: ${{ variables.minimumVersionNumber }}

# ...steps after

Pourquoi n’utilisons-nous pas la notation $(ma_variable) partout dans notre pipeline et évitons d’utiliser des paramètres pour nos templates?

Ce n’est pas recommandé car si vous faites cela, vous:

  • Perdez la généricité de vos templates et vous n’aurez plus la possibilité de les réutiliser,
  • Vous ne saurez pas quels paramètres sont nécessaires pour utiliser le template.

Touche finale

Comme vous pouvez le voir dans ces tutoriels, vous avez plusieurs façons d’utiliser les paramètres et les variables dans Azure DevOps, assurez-vous de vérifier le contexte pour appliquer le bon, vous n’accédez pas à vos variables et paramètres de la même manière.

N'hésitez pas à me suivre sur pour ne pas rater mon prochain tutoriel !