DevOps est devenu incontournable pour le succès des projets. En unissant les forces des équipes de développeurs (Dev) et d’exploitation (Ops), la méthodologie DevOps offre de nombreux avantages à condition toutefois de choisir les bons outils.
Azure DevOps et GitHub, deux outils de collaboration détenus par Microsoft, sont parmi les plus populaires ! Chacun offre des fonctionnalités de CI/CD (intégration continue et livraison continue) avec, respectivement, Azure Pipelines et GitHub Actions.
Découvrons chacun de ces 2 outils
Azure DevOps
Azure DevOps représente l’évolution de Visual Studio Team Foundation Services (VSTS) puis Visual Studio Online (VSTO).
Malgré le nom donné par Microsoft à cet outil, il dépasse largement le cadre Azure : il permet la gestion du développement d’applications déployées sur des environnements OnPrem ou sur d’autres Cloud publiques comme AWS ou Google Cloud également.
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 (tâches/bugs/user stories, plans de test).
Chaque service Azure DevOps est extensible, ce qui permet de prendre en compte tout type d’application, quels que soit l’infrastructure, la plateforme ou le cloud. Il est donc plus aisé de tirer parti des outils déjà utilisés au sein de l’organisation.
Azure DevOps fournit les outils permettant d’avoir une démarche d’intégration et de déploiement continus qui inclue :
- un dépôt Git pour la gestion du code source de l’application et du code d’infrastructure (IaC : modèles ARM/Bicep/Terraform ou autre, scripts),
- un système de notifications et d’approbations
- un système de liens entre les sources et des « workitems » (tâches/bugs)
- un système de gestion des artefacts (packages nuget ou librairies réutilisables)
- un système de « pipelines » permettant
- la génération pour la production de packages et d’autres artefacts déployables ou réutilisables,
- éventuellement le déploiement et l’installation vers des environnements de développement, de test ou de production.
Qu’est-ce que Azure Pipelines ?
Au sein de la suite Azure DevOps, Azure Pipelines est un service entièrement dédié au CI/CD qui gére à la fois l’intégration et la livraison/déploiement continues.
Cette solution permet de tester, publier, et déployer le code automatiquement et d’offrir une traçabilité de bout en bout du cycle de vie de développement logiciel.
Comme le précise Maud, Directrice Technique de SoftFluent
Historiquement il existe deux différents types de pipelines sur Azure DevOps : les pipelines de build permettant la construction d’artefacts, et les pipelines de livraison (release) pour livrer ou déployer un artefact de build sur un environnement. Les pipelines de livraison peuvent dépendre du succès de pipeline de build, et de l’état d’approbations humaines.
Microsoft aligne les concepts CI/CD et le pipeline de type YAML permet maintenant de gérer tous les types de pipelines.
Plans de test Azure DevOps
Azure Test Plans est entièrement intégré à Azure Pipelines pour prendre en charge les tests au sein de l’intégration continue/du déploiement continu (CI/CD). Les plans de test et les cas de test peuvent être associés à des pipelines de build ou de mise en production. Des tâches spécialisées de pipeline peuvent être ajoutées aux définitions de pipeline pour capturer et publier les résultats des tests. Les résultats des tests peuvent être examinés via des rapports de progression intégrés et des rapports de test de pipeline.
Ainsi, les développeurs peuvent intégrer leur code modifié plusieurs fois par jour s’ils le souhaitent. Les modifications à fusionner sont automatiquement testées pour détecter le moindre conflit entre le code existant et le nouveau (à tous les niveaux, classes, fonctions, modules…). Les dysfonctionnements éventuels sont ainsi résolus très tôt, plus fréquemment et plus rapidement.
GitHub
Plateforme libre, elle permet aux développeurs de publier et de partager, de manière totalement ouverte, le code qu’ils ont créé. Devenu l’un des sites plus populaires, GitHub héberge aujourd’hui plus de 80 millions de projets : des logiciels ou briques logicielles de tout type (site Web, application mobile), quel que soit le langage de programmation.
Espace collaboratif, chacun peut contribuer et proposer des modifications, des espaces de discussions permettant également d’échanger autour du code déposé.
Pour un développeur, exister sur GitHub est devenu un passage obligé. Toute une communauté de programmeurs peut travailler constamment à la recherche de solutions aux problèmes concrets. Et ces solutions peuvent être directement proposées au public.
Le succès de ce service a attiré l’attention de Microsoft qui le rachète en 2018
Comme le précise Maud :
L’une des principales fonctionnalités de GitHub est son système de contrôle de version Git qui permet de modifier le code sans impacter directement le logiciel via les « pull requests ». Les changements proposés peuvent ainsi être intégrés au logiciel, après passage en revue et approbation’. Cette fonctionnalité existe également avec le repository Git des projets Azure Devops mais est moins mise en avant que dans GitHub.
Toutes les modifications apportées à un projet sont généralement sauvegardées dans un « changelog » via des GitHub actions utilitaires. Il est donc aisé de savoir exactement quels changements ont été apportés à chaque nouvelle version.
Même si le focus de GitHub est plutôt sur des projets publics, il est également possible de créer des projets privés uniquement utilisables par une équipe projet sur invitation.
Qu’est-ce que GitHub Actions ?
L’une des fonctionnalités de GitHub est appelée « Actions ». Ces actions permettent d’automatiser, de personnaliser et d’exécuter les flux de travail de développement directement depuis le dépôt de code. Il est notamment possible de configurer le processus d’intégration continue.
L’intégration continue ou CI est un processus de build/compilation lors de la modification de code, ou lors de la fusion de nouveau code (pull-request) avec la base de code existante d’un projet. Cette approche permet notamment de détecter les bugs de façon précoce pour les corriger facilement et à moindre coût.
GitHub Actions est l’outil de pipeline CI/CD de GitHub. Open-source, le build ne repose sur aucune technologie spécifique.
Il n’y a pas d’éditeur en ligne officiel pour les définitions YAML de pipelines. On peut donc utiliser n’importe quel éditeur de texte et déployer les mises à jour vers le dépôt Git.
Points communs entre GitHub et Azure DevOps
GitHub et Azure DevOps présentent plusieurs points communs. Tout d’abord, tous deux offrent des dépôts de code publics et privés pour répondre aux besoins liés à tous les types de projets. Microsoft fait converger petit à petit les deux plateformes.
GitHub et Azure DevOps s’intègrent tous deux avec un éventail d’outils, plateformes et services populaires. Ces deux outils s’intègrent notamment avec Microsoft Azure. Ainsi, il est par exemple possible d’utiliser les services de sécurité de ce cloud pour les deux plateformes.
La description des pipelines CI/CD de GitHub et Azure Devops utilisent maintenant la même syntaxe YAML.
Notons aussi que les deux services sont également disponibles en version locale (on-premises). Il s’agit de GitHub Enterprise et Azure DevOps Server.
Quel est le meilleur outil DevOps ?
Azure DevOps et GitHub simplifient tous deux la communication et améliore la collaboration et la gestion de projets pour les équipes de développeurs.
GitHub a peut-être un avantage pour les développeurs de projets open-source et les développeurs n’utilisant aucune brique logicielle d’origine Microsoft. Les fonctionnalités de cette plateforme aident notamment à ouvrir ce projet aux contributions extérieures.
En revanche, Azure DevOps est idéal pour les développeurs de projets qui ne sont pas open source. Ses différents outils favorisent la collaboration et la communication de tous les acteurs du projet.
Quoi qu’il en soit, il est possible d’intégrer Azure DevOps avec GitHub, et vice-versa. Par conséquent, rien n’empêche d’utiliser les 2 en combinaison…