Photo par Paul

Sélectionnez dynamiquement votre agent de build avec Azure DevOps Server

Exécutez votre projet sur un agent spécifique à la demande!

Créé par Damien Aicheh le 13/01/2022 · 4 mins

Lorsque vous exécutez votre pipeline sur Azure DevOps Server pour vos projets, vous devez parfois cibler un agent spécifique sans modifier la configuration de vos demands.

Cela peut être utile dans ces cas :

  • Testez si votre projet peut être build avec la prochaine version du sdk
  • Exécutez votre projet vers un agent spécifique car celui par défaut est arrêté ou interrompu
  • Tester une nouvelle configuration d’agent pour votre projet

Lorsque vous utilisez Azure DevOps Server, vous êtes responsable de la gestion de votre pool d’agents.

Dans ce tutoriel nous découvrirons comment définir vos demands par défaut pour cibler tous les agents compatibles et en même temps, pouvoir sélectionner un agent spécifique si besoin.

Le pipeline

Un pipeline a une structure comme celle-ci :

pipeline
  | --- stage 1
      | --- job 1
          | --- task 1
          ...
          | --- task X
      ...
      | --- job Y
  ...
  | --- stage Z

Chaque pipeline peut avoir plusieurs stages qui peuvent contenir plusieurs jobs et chaque tâche a ses propres étapes représentées par les tasks.

Par exemple, un stage peut avoir la responsabilité de contenir toutes les jobs de build pour votre projet, et chaque job buildera votre application pour un environnement spécifique (dev, staging, prod…). Une task est une simple commande qui exécute un script.

Définir les demands

Les demands permettent à Azure DevOps de sélectionner le bon agent pour vous. Vous pouvez le définir à l’aide du mot-clé demands.

Ci-dessous, nous demandons un agent avec une version de XCode définie sur 13.0:

demands:
- XCODE_VERSION -equals 13.0

La XCODE_VERSION est appelée une capacité. Ceci est défini manuellement dans votre agent. Avec cette demande, votre pipeline s’exécutera uniquement avec un agent exécutant cette version de Xcode.

Sélectionnez un agent spécifique

Maintenant que nous savons comment sélectionner un agent à l’aide des demands, ajoutons la possibilité de le choisir par son nom:


parameters:
  agentName: 'Any'

stages:
- stage: Build
  pool:
    name: Default # The name of your agent pool
    ${{ if eq(parameters.agentName, 'Any') }}:
      demands:
      - XCODE_VERSION -equals 13.0
      # Other demands here
   
    ${{ if ne(parameters.agentName, 'Any') }}:
      demands:
      - Agent.Name -equals ${{ parameters.agentName }}
  jobs:
  - job:
    steps:
      # All steps for your job here..

Comme vous pouvez le voir ci-dessus, nous définissons le agentName à une valeur par défaut: Any. Lorsque vous exécuterez votre pipeline, si vous ne modifiez pas cette valeur, il l’exécutera automatiquement en utilisant les demandes que vous avez spécifiez, ici la version Xcode.

Cependant, si vous souhaitez exécuter votre pipeline sur un agent spécifique, il vous suffit de saisir le nom de cet agent avant de démarrer le pipeline.

Touche finale

Il est désormais facile de basculer entre différents agents et configurations sur vos pipelines Azure DevOps Server. D’après mon expérience, cette fonctionnalité vous fera gagner beaucoup de temps dans vos projets !

Happy coding!

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