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.

Dossier de travail

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.WorkFoldervariable 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.

Le dossier de travail par défaut pour les agents Windows se trouve généralement sur le lecteur D :\ et peut être référencé dans votre pipeline à l’aide de la Agent.WorkFoldervariable prédéfinie.

Dans l’exemple suivant, WorkFolder est défini sur un disque de données attaché affecté à la lettre F.

pool: 
  name: fabrikam-managed-pool # Name of Managed DevOps Pool
  demands:
  - WorkFolder -equals f:\custom-work-folder

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.

Important

Si vous avez plusieurs images dans votre pool et que vous n’utilisez pas de demandes dans vos pipelines pour désigner une image, les pipelines s’exécutent à l’aide de la première image répertoriée dans votre pool. Vous pouvez modifier l’ordre des images dans votre pool en modifiant l’ordre des images dans la liste images dans la section fabricProfile (si vous utilisez des modèles ), ou en triant les images dans la liste des images dans le portail Azure à l’aide du glisser-déplacer.

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

pool: 
  name: fabrikam-dev-pool # Name of Managed DevOps Pool
  demands:
  - ImageOverride -equals ubuntu-24.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 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.

Important

Lorsque vous utilisez ImageVersionOverride pour spécifier une version d’image différente de celle configurée dans les paramètres de votre pool, chaque agent est démarré à la demande à l’aide de la version d’image spécifiée.

Les agents de réserve sont provisionnés à l'aide des versions d'image spécifiées dans la configuration de votre pool, donc si vous utilisez ImageVersionOverride, les agents de réserve ne seront pas compatibles avec cette version, ce qui entraînera le démarrage d'un nouvel agent.

Configurez la ImageVersionOverride demande dans la demands section de votre pipeline. L'exemple suivant spécifie un ImageVersionOverride de 20250427.1.0.

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

Conseil / Astuce

Si vous pensez qu’un pipeline échoue en raison d’une mise à jour d’image, suivez la procédure de résolution des problèmes : vérifiez si une mise à jour d’image a été effectuée.

Capacités Personnalisées

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