Comprendre Azure Pipelines
Avec un pipeline, vous pouvez automatiser les étapes de votre processus de déploiement. Chaque fois que vous apportez une modification à votre code et que vous validez la modification dans votre référentiel Git, le pipeline exécute le processus prédéfini. Un pipeline peut vérifier si votre code Bicep répond à vos normes de qualité, puis automatise les étapes de déploiement de vos ressources sur Azure. Le processus est défini dans une définition de pipeline que vous créez.
Azure Pipelines est une fonctionnalité du service Azure DevOps. Azure DevOps comprend également Azure Repos, qui héberge les référentiels Git que vous utilisez pour stocker et partager votre code avec vos collaborateurs. Lorsque vous stockez votre code Bicep dans Git, Azure Pipelines peut accéder à ce code pour automatiser vos processus de déploiement. Dans cette unité, vous allez découvrir Azure Pipelines.
Qu’est-ce qu’un pipeline ?
Un pipeline est le processus reproductible que vous utilisez pour tester et déployer votre code défini dans un fichier de configuration. Un pipeline comprend toutes les étapes que vous souhaitez exécuter et leur ordre.
Lorsque vous utilisez Azure Pipelines, vous définissez votre pipeline à l’aide d’un fichier YAML. Un fichier YAML est un fichier texte structuré, un peu comme Bicep l’est aussi. Vous pouvez créer et modifier les fichiers YAML à l’aide de n’importe quel éditeur de texte. Dans ce module, vous allez utiliser Visual Studio Code. Visual Studio Code offre une extension qui peut faciliter la modification des fichiers de pipeline YAML Azure DevOps. L’interface web d’Azure DevOps fournit également des outils que vous pouvez utiliser pour consulter et modifier vos fichiers YAML de pipeline.
Notes
Azure Pipelines comprend également des pipelines classiques, qui sont une version antérieure de la fonctionnalité de pipeline. Les pipelines basés sur YAML ont remplacé les pipelines classiques. Dans ce module, nous aborderons uniquement les pipelines YAML. Nous vous recommandons d’utiliser des pipelines YAML.
Comme un fichier de YAML de pipeline est un fichier de code, le fichier est stocké avec votre code Bicep dans votre référentiel Git. Vous utilisez les fonctionnalités de Git pour collaborer sur votre définition de pipeline. Vous pouvez gérer différentes versions de votre fichier de pipeline en utilisant les validations (commit) et les branches. Dans un module ultérieur, vous découvrirez également d’autres fonctionnalités avancées des pipelines, comme les modèles. Les modèles rendent les définitions de pipeline faciles à réutiliser.
Agents et pools
Jusqu’à présent, vous avez déployé vos fichiers Bicep à partir de votre ordinateur local. Après avoir écrit un modèle Bicep, vous le déployez dans Azure à l’aide d’Azure CLI ou d’Azure PowerShell. Ces outils utilisent les ressources de votre ordinateur pour envoyer le modèle à Azure. Ils utilisent votre identité personnelle pour vous authentifier auprès d’Azure et pour vérifier que vous disposez des autorisations nécessaires pour déployer les ressources.
Un pipeline doit également avoir accès à un ordinateur afin de pouvoir exécuter les étapes de déploiement. Azure Pipelines utilise un ordinateur appelé agent. Un agent est un ordinateur configuré pour exécuter les étapes de déploiement d’un pipeline. Chaque agent possède déjà les outils Bicep et Azure que vous avez utilisés dans les modules précédents, il peut donc faire les mêmes choses que vous faites depuis votre propre ordinateur. Au lieu que ce soit un humain qui exécute les commandes, le service Azure Pipelines indique à l’agent d’exécuter les étapes que vous avez définies dans un fichier YAML.
Azure Pipelines fournit plusieurs types d’agents avec différents systèmes d’exploitation, comme Ubuntu ou Windows, et différents ensembles d’outils. Microsoft exécute ces agents afin que vous n’ayez pas à gérer l’infrastructure de calcul pour les agents. Les agents sont parfois appelés agents hébergés par Microsoft ou agents hébergés, car ils sont hébergés en votre nom. Lorsque votre pipeline s’exécute, un agent hébergé est automatiquement créé. Une fois l’exécution de votre pipeline terminée, l’agent hébergé est automatiquement supprimé. Vous ne pouvez pas accéder directement aux agents hébergés. Il est donc important que votre pipeline contienne toutes les étapes nécessaires au déploiement de votre solution.
Un pool d’agents contient plusieurs agents du même type. Lorsque vous créez votre pipeline, vous indiquez à Azure Pipelines le pool d’agents à utiliser pour exécuter chaque ensemble d’étapes. Lorsque votre pipeline s’exécute, il attend qu’un agent soit disponible dans le pool, puis il demande à l’agent d’exécuter vos étapes de déploiement. Tout agent du pool peut être affecté à l’exécution de votre pipeline.
Notes
Vous avez la possibilité de créer un agent personnalisé appelé agent auto-hébergé. Vous pouvez créer un agent auto-hébergé si vous avez un logiciel spécifique à exécuter dans le cadre de votre pipeline ou si vous devez contrôler précisément la configuration de l’agent. Nous n’aborderons pas les agents auto-hébergés dans ce module, mais nous fournissons un lien vers des informations supplémentaires dans le résumé.
Déclencheurs
Pour indiquer à Azure Pipelines quand exécuter votre pipeline, vous créez un déclencheur. Vous pouvez choisir parmi plusieurs types de déclencheurs. Pour le moment, vous utiliserez un déclencheur manuel. Vous indiquerez manuellement à Azure Pipelines quand commencer à exécuter votre pipeline. Plus tard dans ce module, vous en saurez plus sur les autres types de déclencheurs.
Étapes
Une étape représente une opération unique qui est effectuée par le pipeline. Une étape est similaire à une commande individuelle que vous exécutez dans Bash ou PowerShell. Pour la plupart des déploiements, vous exécutez plusieurs étapes les unes après les autres. Vous définissez l’ordre et tous les détails de chaque étape dans votre fichier YAML de pipeline.
Azure Pipelines propose deux types d’étapes :
- Scripts. Utilisez une étape de script pour exécuter une seule commande ou séquence de commandes dans Bash, PowerShell ou l’interpréteur de commandes Windows.
- Tâches. Une tâche est un moyen pratique d’accéder à de nombreuses fonctionnalités différentes sans écrire d’instructions de script. Par exemple, une tâche intégrée peut exécuter les cmdlets Azure CLI et Azure PowerShell pour tester votre code ou télécharger des fichiers sur un serveur FTP. N’importe qui peut écrire une tâche et la partager avec d’autres utilisateurs en publiant la tâche sur la Place de marché Visual Studio. Un grand nombre de tâches commerciales et open source sont disponibles.
Certaines personnes préfèrent utiliser des instructions de script plutôt que des tâches intégrées, car elles offrent un meilleur contrôle sur ce qui est exécuté. D’autres personnes préfèrent utiliser des tâches afin de ne pas avoir à écrire et gérer des scripts. Dans ce module, nous utilisons un mélange des deux approches.
travaux
Dans Azure Pipelines, une tâche représente un ensemble ordonné d’étapes. Vous avez toujours au moins une tâche dans un pipeline, et lorsque vous créez des déploiements complexes, il est courant d’avoir plusieurs tâches.
Notes
Vous pouvez définir chaque travail pour qu’il s’exécute sur un pool d’agents différent. Exécuter des travaux sur différents pools d’agents est utile lorsque vous créez et déployez des solutions qui doivent utiliser des systèmes d’exploitation différents dans différentes parties de leur pipeline.
Supposons, par exemple, que vous génériez une application iOS et son service principal. Vous pouvez avoir une tâche qui s’exécute sur un pool d’agents macOS pour créer l’application iOS et une autre tâche qui s’exécute sur un pool d’agents Ubuntu ou Windows pour générer le serveur principal. Vous pouvez même indiquer au pipeline d’exécuter les deux tâches simultanément, ce qui accélère l’exécution de votre pipeline.
Tout au long de ce module, nous déclarons le pool d’agents à la racine des fichiers de définition de pipeline, de sorte que tous les travaux des pipelines utilisent le même pool d’agents.
Notes
Vous pouvez également utiliser des étapes dans Azure Pipelines pour diviser votre pipeline en phases logiques et ajouter des vérifications manuelles à différents stades de l’exécution de votre pipeline. Vous en apprendrez davantage sur les étapes dans les futurs modules.
Exemple de pipeline de base
Maintenant que vous connaissez les concepts de base qui sous-tendent Azure Pipelines, voyons une définition de pipeline simple dans YAML :
trigger: none
pool:
vmImage: ubuntu-latest
jobs:
- job:
steps:
- script: echo Hello, world!
displayName: 'Run a one-line script'
- script: |
echo We'll add more steps soon.
echo For example, we'll add our Bicep deployment step.
displayName: 'Run a multi-line script'
Examinons en détail chaque partie du fichier :
trigger
indique à votre pipeline quand il doit s’exécuter. Dans ce cas,trigger: none
indique à Azure Pipelines que vous souhaitez déclencher manuellement le pipeline.pool
indique au pipeline le pool d’agents à utiliser lors de l’exécution des étapes du pipeline. Dans cet exemple, le pipeline s’exécute sur un agent exécutant le système d’exploitation Ubuntu, qui provient du pool d’agents hébergés par Microsoft.jobs
regroupe toutes les tâches dans votre pipeline.job
indique à votre pipeline que vous avez une seule tâche.Conseil
Lorsque votre pipeline ne contient qu’une seule tâche, vous pouvez omettre les mots clés
jobs
etjob
. Nous avons inclusjob
ici pour clarifier la façon dont les concepts fonctionnent ensemble dans un pipeline.steps
répertorie la séquence d’actions à exécuter dans la tâche. L’exemple YAML comprend deux étapes. Les deux étapes exécutent un script simple pour afficher un texte. Chaque étape dispose d’une valeurdisplayName
, qui est un nom explicite pour l’étape. Ce nom s’affiche lorsque vous examinez les journaux de pipeline. Pour créer une étape de script multiligne, utilisez le caractère de barre verticale (|
) comme indiqué dans l’exemple. Après l’exécution de l’étape, vous verrez les sorties dans le journal de pipeline.
Important
Dans les fichiers YAML, la mise en retrait est importante. Examinez l’exemple YAML. Certaines lignes du YAML sont mises en retrait par deux ou quatre espaces. Le nombre d’espaces que vous utilisez est important. Si vous n’indentez pas le fichier correctement, Azure Pipelines ne peut pas l’interpréter. Visual Studio Code vous aide à trouver et corriger les erreurs dans les mises en retrait de votre fichier YAML.