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, WorkFolder
un 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é.