Comprendre Azure DevOps et créer un pipeline CI/CD

Active Directory

illustration d’azure devops

Vous souhaitez vous appuyer sur un outil capable d’automatiser et de gérer l’ensemble du cycle du développement logiciel ? Azure DevOps est la solution qu’il vous faut. Avant de nous pencher sur sa nature et sa contribution au développement et à la mise en production de vos produits, essayons de mieux comprendre en quoi consiste le DevOps.

Le DevOps combine des pratiques de développement (dev) et opérationnelles (ops) qui réunissent personnes, processus et technologies. Son but ? Générer de la valeur en continu pour les organisations qui cherchent à accélérer et rendre plus efficaces leurs processus métiers. Grâce à divers services modernes, le DevOps permet aux équipes de développement logiciel de mieux planifier, de mieux collaborer et de livrer le produit final plus rapidement afin qu’il soit commercialisé plus vite.

Avec le DevOps, différentes équipes, par exemple, de développement informatique, d’assurance qualité et de sécurité collaborent pour créer des produits plus robustes et fiables. Les organisations qui nourrissent une culture DevOps sont en mesure de répondre rapidement et efficacement aux besoins de leurs clients. De nombreux outils de DevOps sont aujourd’hui disponibles sur le marché, et la plupart proposent des fonctionnalités proches : on peut notamment citer Jenkins, Git, Github, Bitbuckets… En plus de permettre l’adoption d’une culture DevOps, ils offrent des fonctionnalités comme le contrôle des versions et les référentiels de code. Toutefois, ils ne permettent pas de gérer le cycle de développement logiciel de bout en bout. Et c’est là qu’Azure DevOps entre en scène.

Qu’est-ce qu’Azure DevOps ?

La suite Azure DevOps a été lancée en octobre 2018. Cette suite SaaS propose de nombreux outils pensés non seulement pour le DevOps, mais aussi pour gérer l’ensemble du cycle de vie de développement.

Un des principaux avantages d’Azure DevOps réside dans sa flexibilité, car elle peut s’intégrer avec d’autres outils du marché pour une gestion partagée du flux de processus et orchestre la totalité des outils DevOps. Il est ainsi plus facile de tirer profit des outils déjà utilisés au sein de l’organisation. Il existe trois raisons principales pour lesquelles Azure DevOps est supérieure aux autres outils du marché :

  1. Flexibilité : la flexibilité d’Azure DevOps permet d’utiliser chacun de ses services de manière indépendante et de les intégrer aux outils déjà utilisés par l’organisation, pour plus de possibilités d’adaptation.
  2. Indépendance de la plateforme : développée par Microsoft, la suite Azure DevOps n’est pas pour autant réservée aux plateformes et langages de la marque. Elle a été conçue pour fonctionner avec n’importe quelle plateforme (Linux, Windows et macOS inclus), mais aussi n’importe quel langage (.Net, Java, PHP, Python, C, C++, iOS, Android et NodeJS).
  3. Indépendance du Cloud : le modèle d’intégration et de livraison continues d’Azure DevOps est pris en charge pour Azure, mais aussi pour Amazon Web Services (AWS) et Google Cloud Platform (GCP).

Avantages d’Azure DevOps

En plus des fonctionnalités mentionnées à la section précédente, la suite Azure DevOps présente trois avantages principaux par rapport aux outils similaires :

  1. Fiabilité : Azure DevOps est une offre SaaS disponible dans le monde entier et offrant un SLA de 99,9 %, ce qui en fait un outil fiable. Par ailleurs, la suite offre une grande évolutivité et une assistance disponible à tout moment.
  2. Application rapide des correctifs et mises à niveau : Azure DevOps étant une suite SaaS, les correctifs et mises à niveau sont gérés par Microsoft, ce qui simplifie le travail des équipes informatiques et son utilisation.
  3. Mise à jour rapide des fonctionnalités : la feuille de route d’Azure DevOps a déjà été communiquée par Microsoft, qui publie rapidement de nouvelles fonctionnalités (généralement toutes les trois semaines).

Fonctionnalités d’Azure DevOps

Comme nous l’avons déjà vu, Azure DevOps permet une gestion de bout en bout du cycle de développement des produits et comprend les services suivants :

  1. Azure Boards : ces outils agiles facilitent la planification et le suivi complet de l’avancement du développement, des anomalies signalées et des autres problèmes. L’intégralité de la gestion du projet peut donc être réalisée avec Azure Boards. Ce service prend en charge nativement les méthodologies agiles Scrum et Kanban. Il propose des tableaux de bord avec rapports intégrés personnalisables et peut s’adapter à l’évolution des exigences métier.
  2. Azure Pipelines : cet outil de DevOps permet la mise en place d’une intégration et d’une livraison continues (CI/CD), aussi connues sous le nom de pipelines CICD, pour faciliter la création et la publication d’applications du développement à la mise en production. Nous verrons ces pipelines en action dans les sections suivantes.
  3. Azure Repos : cette palette d’outils de contrôle de version peut être utilisée par l’équipe de développement pour gérer le code et ses différentes versions. Il facilite ainsi le suivi des modifications apportées au code au fil du temps et des versions. Lorsque des modifications sont effectuées, l’outil prend des instantanés des fichiers archivés pour que ces modifications puissent être suivies. Ces instantanés sont conservés sans limites de temps. Par ailleurs, cet outil facilite la coordination et la collaboration entre les équipes travaillant sur un même projet. Azure Repos propose deux types de contrôle de version :
  • Git : contrôle de version distribué
  • Contrôle de version Team Foundation : contrôle de version centralisé
  1. Azure Artifacts : ce service permet aux équipes de packager facilement les dépendances et autres artefacts requis pour le déploiement et le fonctionnement de l’application, ce qui facilite sa publication et son utilisation. Les artefacts peuvent être de nature variable : artefacts de build, Maven, Npm, Nuget, PyPI, packages universels et symboles.
  2. Azure Test Plans : cet ensemble d’outils divers et puissants vous aide à tester vos applications. Ils incluent des tests manuels/exploratoires et des tests continus. Facile à utiliser, cette solution de gestion de tests dans le navigateur fournit toutes les fonctionnalités nécessaires aux différentes méthodologies de test.

DevOps est en réalité un ensemble de pratiques qui influent sur toutes les phases du cycle de développement des applications, notamment la planification, le développement, la livraison et les opérations. Chaque phase repose sur les autres.

Le DevOps réduit le délai entre la validation d’une modification sur le système et la mise en production de cette modification après le passage par plusieurs étapes, tout en assurant une haute qualité. Ces pratiques sont les suivantes : intégration et livraison continues (CI/CD), contrôle de version, développement logiciel agile, infrastructure en tant que code, gestion de la configuration et surveillance continue.

Créer et configurer des pipelines CI et CD avec Azure DevOps

Nous avons évoqué les fonctions centrales d’Azure DevOps. L’une d’entre elles est Azure Pipelines. Cette fonction vise à assurer une intégration et une livraison continues pour générer et tester le code de manière persistante, et livrer un produit performant et de haute qualité. Ces pipelines peuvent être définis depuis l’interface utilisateur ou en utilisant la syntaxe YAML.

L’intégration continue permet de produire un code, une infrastructure et des artefacts prêts à être déployés, tandis que la livraison continue facilite le déploiement du code intégré et généré dans différentes phases de livraison en tant que nouvelles versions.

Dans la section suivante, nous allons essayer de configurer un pipeline CICD à l’aide du langage YAML. Le pipeline est défini dans un fichier YAML nommé azure-pipelines.yml.

Nous allons suivre les étapes ci-dessous pour configurer le pipeline CICD, pour lequel nous allons utiliser le code .Net Core du référentiel suivant :

https://github.com/MicrosoftDocs/pipelines-dotnet-core

  1. Créer l’organisation
  2. Créer un nouveau projet
  3. Créer le pipeline .Net Core
  4. Gérer un pipeline avec la CLI Azure
    1. Exécuter un pipeline
    2. Mettre à jour un pipeline
    3. Afficher un pipeline
  5. Mettre à jour les détails d’un projet
  6. Ajouter/actualiser les équipes d’un projet
  7. Vérifier et accorder des droits

Créer l’organisation

  1. Connectez-vous à votre compte Azure DevOps à l’adresse devops.azure.com.
  2. Cliquez sur le lien New Organization (Nouvelle organisation), créez votre organisation et accédez à votre projet. Cliquez sur Continue (Continuer) lorsque vous êtes invité à accepter les conditions générales.
  3. Dans l’écran qui s’affiche, indiquez le nom de l’organisation et l’emplacement, puis répondez au captcha. Cliquez ensuite sur Continuer.

Créer un nouveau projet

  1. Une fois l’organisation créée, vous recevrez un e-mail de confirmation et serez redirigé vers une page permettant de créer un nouveau projet.
  2. Créez le projet en reprenant les éléments indiqués dans la capture ci-dessous. Saisissez le nom du projet et sa visibilité, puis dans l’onglet Advanced (Avancé), sélectionnez Git pour le contrôle de version et Scrum pour le processus d’élément de travail.
  3. Cliquez sur Créer le projet.
  4. Vous êtes ensuite redirigé vers le tableau de bord de l’organisation, sur lequel apparaît le nouveau projet.

Créer le pipeline .Net Core avec un fichier YAML

  1. Cliquez sur le nom du projet dans le tableau de bord.
  2. Dans l’écran qui s’affiche, cliquez sur Pipelines, puis sélectionnez New Pipeline (Nouveau pipeline).
  3. Avant de continuer, dupliquez le référentiel (https://github.com/MicrosoftDocs/pipelines-dotnet-core) depuis GitHub.
  4. Suivez les différentes étapes de l’assistant en commençant par préciser que l’emplacement du code source est GitHub.
  5. Vous serez invité à autoriser Azure Pipelines à accéder à votre référentiel GitHub. Vous pourrez être directement redirigé vers GitHub pour vous connecter. Si c’est le cas, saisissez vos identifiants GitHub.
  6. Cliquez sur Authorize AzurePipelines (Autoriser Azure Pipelines).
  7. Le nom du référentiel dupliqué au cours des étapes précédentes est affiché.
  8. Sélectionnez le référentiel lorsque la liste apparaît.
  9. Vous pouvez être redirigé vers GitHub et invité à installer l’application Azure Pipelines. Dans ce cas, choisissez Approve & install (Approuver et installer).
  10. Lorsque l’onglet Configure (Configurer) s’affiche, sélectionnez ASP.NET Core.
  11. Maintenant que votre pipeline apparaît sous la forme d’un fichier YAML, vérifiez-le, puis cliquez sur Save and Run (Enregistrer et quitter). 
  12. Une fenêtre contextuelle s’affiche : vous pouvez y saisir un message avant d’enregistrer le pipeline. Une fois le message rédigé, cliquez une nouvelle fois sur Save and Run (Enregistrer et exécuter). Pour le moment, vous pouvez valider dans la branche maîtresse.
  13. Le pipeline de base est maintenant prêt à créer et exécuter le code. L’écran ci-dessous s’affiche une fois le pipeline déployé.
  14. Vous pouvez voir l’erreur No hosted parallelism has been purchased or granted. To request a free parallelism grant, please fill out the following form https://aka.ms/azpipelines-parallelism-request (Aucun parallélisme hébergé n’a été acheté ou accordé. Pour demander l’octroi d’un parallélisme gratuit, renseignez le formulaire suivant).

Microsoft a en effet modifié sa politique pour le niveau gratuit d’un pool d’agents hébergés pour les projets publics et privés de nouvelles organisations DevOps. Cette décision serait due au fait que de nombreuses personnes abusent de cette fonctionnalité en envoyant un trafic important sur ces pools.

Pour résoudre le problème, ouvrez le lien indiqué et fournissez les informations demandées dans le formulaire pour obtenir l’approbation de Microsoft. Ce formulaire est illustré ci-dessous.

Pour en savoir plus sur cette erreur, rendez-vous à l’adresse https://devblogs.microsoft.com/devops/change-in-azure-pipelines-grant-for-private-projects/.

Une fois l’autorisation accordée par Microsoft, l’administrateur recevra un e-mail de confirmation. Vous pourrez ensuite réessayer d’exécuter le pipeline. Une fois la build mise en attente et démarrée, l’écran suivant s’affiche.

À l’issue de l’exécution de la tâche, un message de succès ou d’échec s’affiche, comme illustré ci-dessous. L’administrateur recevra également un e-mail confirmant la réussite ou l’échec de la build.

Gérer un pipeline avec la CLI Azure

Vous pouvez aussi gérer Azure Pipelines depuis l’interface de ligne de commande Azure. Il vous faudra alors utiliser la commande ‘az pipelines’.

  • Exécuter le pipeline : pour exécuter le pipeline, utilisez la commande ‘az pipelines run’.

az pipelines run –name neerajks77.pipelines-dotnet-core –branch master –output table

  • Actualiser un pipeline : pour actualiser un pipeline, utilisez la commande ‘az pipelines update’.

az pipelines update –name neerajks77.pipelines-dotnet-core –description “rename this pipeline” –new-name varonis.pipelines-dotnet-core –output table

  • Afficher les détails d’un pipeline : pour afficher les détails d’un pipeline, utilisez la commande ‘az pipelines show’.

az pipelines show –name neerajks77.pipelines-dotnet-core –output table

Mettre à jour les détails d’un projet

Vous pouvez vouloir mettre à jour les détails du projet, notamment son nom, sa description, son processus et même sa visibilité. Pour ce faire, suivez les étapes ci-dessous.

  1. Cliquez sur Project Settings (Paramètres du projet) dans le coin inférieur gauche du menu de gauche.
  2. Vous serez redirigé vers l’onglet Overview (Présentation) des paramètres du projet. Vous pouvez y gérer les détails du projet, les équipes, les droits et d’autres paramètres liés aux projets, notamment pour Boards, Pipelines, Repos, Artifacts et Test Plans.
  3. Pour modifier les détails du projet, cliquez afin d’ouvrir la page Overview (Présentation). Vous pouvez y modifier le nom, la description et la visibilité du projet. Le processus ne peut pas être modifié.
  4. Pour ajouter de nouveaux administrateurs à votre projet, cliquez sur le bouton Add Administrators (Ajouter des administrateurs) sous Project Administrators (Administrateurs du projet).
  5. Pour activer ou désactiver des services Azure DevOps comme Boards, Repos, Pipelines, Test Plans ou Artifacts, faites défiler la page Overview (Présentation) des paramètres du projet jusqu’en bas et cliquez sur le bouton en regard de chaque service pour les activer ou les désactiver.

Ajouter/actualiser les équipes d’un projet

Vous pouvez souhaiter ajouter une nouvelle équipe ou agrandir une équipe existante. Pour ce faire, procédez comme suit :

  1. Cliquez sur le lien Teams (Équipes) sous General settings (Paramètres généraux). La liste des équipes du projet s’affiche.
  2. Cliquez sur le bouton New Team (Nouvelle équipe) pour ajouter la nouvelle équipe.
  3. Pour ajouter de nouveaux membres à une équipe, cliquez sur le nom de l’équipe en question.
  4. Dans l’écran qui s’affiche, cliquez sur le bouton Add (Ajouter) pour ajouter un nouveau membre.
  5. Pour supprimer un membre de l’équipe, sélectionnez-le, puis cliquez sur le bouton Remove (Supprimer).

Vérifier et accorder des droits

Pour vérifier les droits des utilisateurs et leur en octroyer, procédez comme suit :

  1. Cliquez sur le bouton Permissions (Droits) dans le menu de gauche, sous General (Généralités), puis cliquez sur les utilisateurs qui vous intéressent.
  2. Dans la liste des utilisateurs, cliquez sur le nom des utilisateurs auxquels vous souhaitez ajouter des droits/dont vous souhaitez actualiser les droits.
  3. Dans l’écran qui s’affiche, vous pouvez octroyer ou révoquer des droits pour chaque élément sous chaque service Azure DevOps.
  4. Vous pouvez également vérifier les groupes de l’utilisateur et lui en ajouter en cliquant sur l’onglet Member of (Membre de), puis en cliquant sur le bouton Add (Ajouter).

Récapitulatif

Azure DevOps et ses outils facilitent la mise en place d’une culture permettant de réunir les équipes de développement applicatif, les chefs de projet et d’autres parties prenantes, comme les équipes d’assurance qualité et opérationnelles, pour planifier et collaborer le développement. Cette solution permet aux équipes de se coordonner et de collaborer afin de mettre au point des produits fiables et de grande qualité. Avec DevOps, il devient possible de répondre rapidement aux besoins des clients. Il est ainsi recommandé d’adopter la culture DevOps au plus tôt pour proposer plus rapidement des produits de qualité.

Avatar

Neeraj Kumar

Outre sa passion pour Azure, Neeraj est architecte d'entreprise et responsable de programmes techniques. Fort de 21 ans d'expérience dans l'informatique, Neeraj dirige des programmes haut de gamme axés sur les services numériques et le cloud, architecturant et concevant des solutions pour Azure Cognitive Services, la data science, l'IdO et les migrations vers le cloud, entre autres, pour en faire bénéficier les entreprises en maximisant leur retour sur investissement. Neeraj est un architecte et administrateur Azure certifié et se passionne pour la conception de cours sur Azure visant à résoudre des problèmes concrets, afin d'aider les organisations et les apprenants dans leurs projets de cloud computing.

 

Votre cybersécurité est-elle au cœur de votre infrastructure ?

Bénéficiez d'une évaluation personnalisée des risques auxquels sont exposées vos données, effectuée par des ingénieurs passionnés par la sécurité des données.