Choisir un agent de build hébergé par Microsoft ou autohébergé

Effectué

Dans cette unité, vous découvrirez certains facteurs à prendre en compte pour choisir un agent de build. Vous découvrirez une partie des avantages et des limites de l’utilisation d’un agent hébergé par Microsoft, ainsi que ce qu’implique la configuration de votre propre agent de build privé.

Que sont les agents de build et les pools d’agents ?

Un agent de build est un système qui effectue des tâches de build. Considérez-le comme un serveur dédié qui exécute votre processus de génération.

Imaginez que vous disposez d’un projet Azure Pipelines qui reçoit des demandes de build plusieurs fois par jour, ou peut-être que vous avez plusieurs projets qui peuvent chacun utiliser le même type d’agent de build. Vous pouvez organiser les agents de build en pools d’agents pour vérifier qu’un serveur est prêt à traiter chaque requête de build.

Quand une build est déclenchée, Azure Pipelines sélectionne un agent de build disponible dans le pool. Si tous les agents sont occupés, le processus attend que l’un d’entre eux soit disponible.

Quand vous utilisez un agent hébergé par Microsoft, vous spécifiez l’image de machine virtuelle à utiliser à partir du pool. Voici un exemple de votre configuration de build existante qui utilise un agent de build Ubuntu 20.04 :

pool:
  vmImage: 'ubuntu-20.04'
  demands:
  - npm

Quand vous utilisez un agent hébergé par Microsoft, vous utilisez vmImage pour spécifier le type de système dont vous avez besoin. Microsoft fournit de nombreux types d’image de machine virtuelle, notamment des images de machine virtuelle qui exécutent Windows, macOS et diverses versions de Linux.

La section demands spécifie les logiciels ou fonctionnalités nécessaires à la machine de build.

Quand vous utilisez un agent de build de votre propre pool, également appelé pool privé, vous spécifiez le nom de ce pool. Voici un exemple :

pool:
  name: 'MyAgentPool'
  demands:
  - npm

Quand vous n’avez pas besoin d’une section demands, vous pouvez raccourcir la syntaxe comme suit :

pool: 'MyAgentPool'

Vous allez créer un agent de build et l’ajouter à un pool un peu plus tard dans ce module.

Quel genre d’agent puis-je utiliser ?

Pour choisir un agent de build, vous avez deux facteurs à considérer :

  • Le système d’exploitation sur lequel vous souhaitez générer
  • L’utilisation d’un agent hébergé par Microsoft ou de votre propre agent

Azure Pipelines prend en charge les systèmes d’exploitation suivants :

L’agent de build que vous choisissez dépend principalement des outils que vous utilisez pour générer votre code. Par exemple, si vous utilisez Xcode pour générer vos applications, vous pouvez choisir un agent macOS. Si vous avez besoin de Visual Studio, vous allez probablement choisir un agent Windows.

Votre configuration de build existante utilise un agent hébergé par Microsoft. Les agents hébergés s’exécutent sur une infrastructure fournie par Microsoft.

Un agent privé utilise l’infrastructure que vous fournissez. Votre agent peut être un système qui s’exécute dans le cloud ou dans votre centre de données. Les deux systèmes fonctionnent, tant que l’agent répond à vos besoins et peut se connecter à Azure Pipelines. Dans ce module, vous utiliserez une machine virtuelle qui s’exécute sur Azure, que nous fournissons.

Quand dois-je utiliser mon propre agent de build ?

Pour de nombreuses tâches de build, un agent hébergé par Microsoft fait tout ce dont vous avez besoin. Il représente le point de départ le plus simple.

Microsoft s’occupe de toutes les mises à jour de sécurité et autres mises à jour du système d’exploitation. Il vous suffit de définir la configuration de build à exécuter.

Les agents hébergés contiennent également des logiciels permettant de générer de nombreux types d’application courants. Vous pouvez ajouter tout autre logiciel nécessaire pendant le processus de génération.

Les limites des agents hébergés par Microsoft sont notamment les suivantes :

  • Durée de la build : Une tâche de build peut s’exécuter pendant six heures au maximum.
  • Espace disque : Les agents hébergés fournissent un volume fixe de stockage pour vos sources et vos sorties de build. Ce volume peut ne pas suffire.
  • CPU, mémoire et réseau : Les agents hébergés s’exécutent sur des machines virtuelles Microsoft Azure à usage général. Standard_DS2_v2 décrit les caractéristiques du CPU, de la mémoire et du réseau que vous pouvez attendre.
  • Interactivité : Vous ne pouvez pas vous connecter à un agent hébergé.
  • Partages de fichiers : Vous ne pouvez pas annuler des artefacts de build dans les partages de fichiers UNC (convention d’affectation des noms).

Bien que les agents hébergés soient relativement faciles à configurer, l’utilisation de vos propres agents de build présente certains avantages, mis à part les limitations que nous venons de décrire.

Par exemple, quand vous utilisez des agents hébergés, vous partagez l’infrastructure avec d’autres utilisateurs Azure DevOps. Bien que le démarrage de votre build ne prenne généralement que quelques secondes, il peut durer plus longtemps en fonction de la charge du système Microsoft.

De plus, quand vous utilisez des agents hébergés, vous obtenez un nouveau système pour chaque build. Quand vous utilisez votre propre agent de build, vous avez le choix entre effectuer chaque fois une nouvelle build ou effectuer une build incrémentielle. Cette dernière consiste à réutiliser des outils de génération et du code compilé déjà existants. Une build incrémentielle peut prendre moins de temps, car un bon nombre des outils de génération et des composants dépendants sont déjà installés sur le système.

En contrepartie, dans la mesure où l’infrastructure de build vous appartient, il vous incombe de vérifier que vos agents de build disposent des derniers correctifs logiciels et de sécurité.

Comment configurer un agent de build privé ?

Un agent de build privé contient les logiciels nécessaires à la génération de vos applications. Il contient également le logiciel agent qui permet au système de se connecter à Azure Pipelines et de recevoir des tâches de build.

Lorsque vous configurez un agent privé, vous fournissez l’infrastructure sur laquelle les builds s’exécutent. Cela vous donne toute la flexibilité nécessaire pour créer vos agents et assurer leur maintenance.

Par exemple, vous pouvez :

  • Configurer manuellement l’agent de build : Vous ouvrez le système, vous vous connectez et vous installez de manière interactive vos outils de génération et le logiciel agent.

  • Automatiser le processus : Vous ouvrez le système, puis vous exécutez un script ou un outil pour installer vos outils de génération et le logiciel agent. Vous pouvez configurer l’agent une fois le système en ligne ou pendant le processus de provisionnement.

    Par exemple, quand vous exécutez des agents de build sur Azure, vous pouvez utiliser un modèle Azure Resource Manager (ARM) ou Bicep pour lancer le système et le configurer comme agent de build en une seule étape. Terraform d’HashiCorp est un autre moyen d’automatiser le processus. Terraform fonctionne avec de nombreux types d’infrastructure, notamment Azure.

  • Créer une image : Vous créez une image (ou une capture instantanée) d’un environnement configuré. Vous utilisez ensuite l’image pour créer autant de systèmes identiques que nécessaire dans votre pool.

La configuration manuelle est un bon point de départ, car elle vous permet de comprendre le processus. Il s’agit également du moyen le plus rapide pour effectuer la configuration quand vous avez uniquement besoin d’un seul agent de build.

L’automation s’avère utile quand vous avez besoin de nombreux agents de build, ou que vous devez régulièrement créer et supprimer l’infrastructure de build. Vous pouvez passer d’un processus manuel à un processus automatisé quand vous avez besoin de plusieurs agents.

Les images sont une forme d’automatisation. Elles permettent de gagner du temps, car tous les logiciels sont préconfigurés. En contrepartie, vous devrez peut-être regénérer régulièrement vos images pour incorporer les derniers correctifs de système d’exploitation et outils de génération. Packer d’HashiCorp est un outil populaire de création d’images.

Pour votre scénario Space Game, vous décidez d’utiliser un agent de build privé.

Vérifiez vos connaissances

1.

Supposons que vous voulez créer un jeu vidéo. Le processus de génération prend deux heures et utilise entre 18 et 20 Go d’espace disque pour la compilation des composants du jeu. Quel genre d’agent de build pouvez-vous utiliser ?

2.

Supposons que vous êtes en train de générer une application qui s’exécute sur macOS, Linux et Windows. Comment pouvez-vous générer l’application pour chaque plateforme ciblée ?

3.

Un agent de build autohébergé :