Partager via


Demandes

Les demandes permettent aux pipelines de spécifier les fonctionnalités qui doivent être présentes dans un agent afin qu’Azure DevOps envoie un travail du pipeline à l’agent. Dans les pools DevOps managés, les demandes comme ImageOverride fonctionnent comme les demandes dans Azure Pipelines, où un travail de pipeline est acheminé vers un agent spécifique qui a des attributs correspondant à la demande, mais certaines demandes, telles que WorkFolder et Priority, peuvent être utilisées pour configurer des attributs sur l’agent. Cet article décrit les demandes disponibles dans les pools DevOps managés et comment les utiliser.

WorkFolder

Le dossier de travail par défaut pour les agents se trouve généralement sur le lecteur D :\ pour Windows ou /mnt pour Linux et peut être référencé dans votre pipeline à l’aide de la Agent.WorkFolder variable prédéfinie. Vous pouvez remplacer cet emplacement pour modifier le nom du lecteur et du répertoire utilisé lors du démarrage de l’agent en spécifiant la WorkFolder demande dans votre pipeline. Si vous disposez d’un pool avec état avec un agent en cours d’exécution avec un WorkFolder agent correspondant à votre demande, votre pipeline est envoyé à cet agent. Si vous n’utilisez pas de pools avec état ou qu’aucun agent n’est en cours d’exécution, WorkFolderun nouvel agent est démarré et configuré pour utiliser l’agent désigné WorkFolder. Le répertoire spécifié est créé s’il n’est pas présent. Si le nom du chemin d’accès n’est WorkFolder pas valide, le dossier de travail de l’agent par défaut est utilisé.

Configurez la WorkFolder demande dans la demands section de votre pipeline pour définir votre dossier de travail de l’agent. Si vous utilisez un disque de données attaché et souhaitez que votre dossier de travail agent sur ce disque, utilisez WorkFolder et spécifiez un dossier sur le disque de données comme répertoire de travail de votre agent.

pool: 
  name: fabrikam-managed-pool # Name of Managed DevOps Pool
  demands:
  - WorkFolder -equals c:\custom-work-folder # Windows agent example
  # Use a folder like /user/local/custom-work-folder for Linux
  # or /mnt/storage/sdc/custom-work-folder if you're using a data disk.

Priorité

Priority spécifie la priorité du travail. Les travaux dont la priorité est supérieure sont exécutés en premier. Les valeurs valides sont les suivantes : High, Medium, Low. La valeur par défaut est Medium.

Configurez la Priority demande dans la demands section de votre pipeline.

pool: 
  name: fabrikam-dev-pool # Name of Managed DevOps Pool
  demands:
  - Priority -equals Low

Les travaux sont sélectionnés pour s’exécuter à partir de la file d’attente dans l’ordre de priorité. Par exemple, vous disposez d’un pool qui a un paramètre d’agents maximal de 10 et un pipeline configuré pour utiliser ce pool. Le pool exécute déjà 10 pipelines et 20 autres sont mis en file d’attente. Si vous avez un pipeline prioritaire à exécuter, par exemple pour envoyer un correctif à chaud, il s’exécuterait normalement après les 10 pipelines en cours d’exécution et les 20 pipelines mis en file d’attente terminés. Si vous définissez la priorité sur élevée lors de la mise en file d’attente de votre pipeline de correctif logiciel, il obtient un agent et s’exécute avant les 20 pipelines précédemment mis en file d’attente.

Si plusieurs travaux sont mis en file d’attente en même temps, il est possible qu’un travail de priorité inférieure s’exécute avant un travail de priorité supérieure.

Pour le cas d’un seul pipeline avec plusieurs travaux :

  • Si votre pipeline a des dépendances qui définissent des travaux séquentiels, les travaux séquentiels s’exécutent dans l’ordre spécifié par le pipeline, quel que soit le paramètre de priorité pour chaque travail.
  • Si votre pipeline a plusieurs travaux configurés pour s’exécuter en parallèle (la valeur par défaut pour les pipelines YAML), les travaux sont mis en file d’attente en même temps et les travaux du pipeline avec une priorité inférieure peuvent s’exécuter avant les travaux du pipeline avec une priorité plus élevée.

ImageOverride

Si vous avez plusieurs images dans votre pool, vous pouvez configurer vos pipelines pour utiliser une image spécifique à l’aide de la ImageOverride demande et fournir l’alias de l’image à utiliser. Si vous utilisez une image Azure Pipelines, vous pouvez utiliser son alias prédéfini. Pour toutes les autres images, vous devez configurer vos propres alias.

Dans l’exemple suivant, un pipeline est configuré pour s’exécuter à l’aide d’une image configurée avec un ubuntu-20.04-gen2 alias.

pool: 
  name: fabrikam-dev-pool # Name of Managed DevOps Pool
  demands:
  - ImageOverride -equals ubuntu-20.04-gen2

Important

Ne placez pas de guillemets autour du nom d’alias dans la ImageOverride demande, même s’il contient des espaces dans le nom.

ImageVersionOverride

Si vous utilisez une galerie d’images partagées ou Place de marché Azure image et que vous souhaitez utiliser une version spécifique de l’image au lieu de la version spécifiée par votre configuration d’image, vous pouvez utiliser la ImageVersionOverride demande. Par exemple, vous pouvez l’utiliser pour valider une nouvelle version d’image avant de la promouvoir comme étant la plus récente pour une image. Les exemples suivants spécifient un ImageVersionOverride .2.0.0

Configurez la ImageVersionOverride demande dans la demands section de votre pipeline.

pool: 
  name: fabrikam-dev-pool # Name of Managed DevOps Pool
  demands:
  - ImageVersionOverride -equals 2.0.0

CustomCapabilities

Si vous avez des pools avec état et que vous souhaitez exécuter un travail sur une instance d’agent en cours d’exécution spécifique, vous pouvez utiliser la CustomCapabilities demande.

Important

La CustomCapabilities demande s’applique uniquement aux agents dans des pools avec état. Lorsque vous utilisez des pools sans état, vous obtenez une nouvelle image d’agent pour chaque travail.

Lorsque vous spécifiez une CustomCapabilities demande dans votre pipeline, si un pipeline avec la même demande s’est exécuté précédemment et que l’agent avec état qui a exécuté le pipeline est toujours en ligne, cet agent sera utilisé pour exécuter le pipeline. Si aucun agent en ligne ne correspond à la CustomCapabilities demande, un agent est approvisionné à partir du pool, marqué avec la CustomCapabilities demande et utilisé pour exécuter le pipeline. Les travaux suivants avec la même CustomCapabilities demande utilisent cette instance d’agent étiquetée pour exécuter leurs travaux tant que cet agent est en ligne.

Dans l’exemple suivant, un pipeline est exécuté à l’aide de l’image windows-2022 Azure Pipelines dans un pool avec état. Si un agent en ligne est prêt à accepter des travaux et est étiqueté avec l’attribut CustomCapabilities (défini par un pipeline qui s’est exécuté précédemment sur l’agent), cet agent sera utilisé pour exécuter ce pipeline. Si aucun agent en ligne ne correspond à cette demande, l’agent disponible suivant est utilisé pour exécuter le travail et l’agent est étiqueté avec l’attribut CustomCapabilities . Les futures exécutions de pipeline avec cette demande s’exécutent sur cet agent, s’il est en ligne et prêt pour les travaux.

pool: 
  name: fabrikam-dev-pool # Name of Managed DevOps Pool
  demands:
  - ImageOverride -equals windows-2022
  - CustomCapabilities -equals MyCustomValue

Par exemple, vous disposez d’un dépôt volumineux qui prend beaucoup de temps à cloner et vous avez plusieurs pipelines qui s’exécutent à partir de ce référentiel. L’utilisation de la même CustomCapabilities demande dans les pipelines peut aider le deuxième pipeline à s’exécuter plus rapidement à l’aide d’un agent avec le référentiel déjà cloné.

Voir aussi