Développement : le fonctionnement des pipelines


Cet article présente les pipelines et plus particulièrement leur fonctionnement via DevOps lors d’un processus de développement de projet informatique.

Tout d’abord, qu’est-ce que le DevOps ?

Définition Microsoft :
Combinant développement (Dev) et opérations (Ops), DevOps est l’union des personnes, des processus et des technologies destinées à fournir continuellement de la valeur aux clients.
Que signifie DevOps pour les équipes ? DevOps permet la coordination et la collaboration des rôles autrefois cloisonnés (développement, opérations informatiques, ingénierie qualité et sécurité) pour créer des produits plus performants et plus fiables. En adoptant une culture DevOps ainsi que des pratiques et outils DevOps, les équipes peuvent mieux répondre aux besoins des clients, accroître la confiance suscitée par les applications qu’elles développent, et atteindre plus rapidement les objectifs de leur entreprise.

Définition Wikipedia :
Le devops — ou DevOps (selon la graphie habituellement utilisée en langue anglaise) — est un mouvement en ingénierie informatique et une pratique technique visant à l’unification du développement logiciel (dev) et de l’administration des infrastructures informatiques (ops), notamment l’administration système.

Les Pipelines

L’intérêt de créer des pipelines DevOps est de pouvoir travailler sur des cycles plus courts et reproductibles.
L’objectif est de diminuer les cycles de mise en production pour permettre de se concentrer sur les aspects de changement et de modification rapide selon les retours des clients.
Dans un processus de développement cyclique d’application DevOps, nous retrouvons 7 étapes permettant d’aller de la planification à la supervision.

  1. Planifier (Plan) : cette étape permet de définir les spécifications fonctionnelles et opérationnelles suite aux retours clients ou, tout simplement, à l’ajout d’une nouvelle fonctionnalité. Il s’agit ensuite de planifier ses sprints.
  2. Développer (Code) : Ensuite, il faut développer la fonctionnalité en utilisant un gestionnaire de version pour faciliter le travail en équipe.
  3. Intégrer/Compiler (Integrate/Build) : Le code est ensuite compilé pour obtenir un fichier exécutable à déployer sur différents environnements.
  4. Tester (Test) : Cette étape est cruciale pour détecter d’éventuels bug ou dysfonctionnement mais aussi pour vous assurer que votre application fonctionne correctement face des pics d’activité (connexions simultanées).
  5. Livrer (Release) : lorsque tous les tests sont réalisés et que le logiciel est stable, le logiciel peut être livré.
  6. Déployer (Deploy) : installer le logiciel dans les différents environnements (pré-prod, prod etc.)
  7. Superviser/Monitorer (Operate & Monitor) : Enfin, cette dernière étape permet de s’assurer que le logiciel et l’infrastructure sont opérationnels, quel que soit l’environnement.

Solution choisie par Arkance Systems France

Pour la gestion des pipelines, Il existe différents outils sur le marché.
Voici quelques exemples :

  • Gitlab pour gérer vos codes sources
  • SonarQube pour vérifier la structure du code
  • Jenkins pour compiler votre code

ARKANCE Systems France utilise en interne, un serveur Azure DevOps. C’est donc naturellement que nous avons fait le choix d’utiliser les outils déjà présents dans ce logiciel.


Pipeline sous Azure DevOps Server

L’outil se trouve dans l’onglet Pipeline . Il permet de gérer les pipelines via une page web. Plusieurs formats de création sont disponibles. Arkance Systems France a choisi le format YAML, car celui-ci est très bien intégré à Azure DevOps Server.
Exemple de fichier :

Le format YAML est un format de script permettant de décrire chaque action à effectuer, ainsi que leur ordre d’exécution. Le YAML peut être écrit directement dans un fichier texte (au format YAML). Il existe également un éditeur intégrer au serveur. Ce dernier peut être d’une grande aide pour commencer.

Les étapes que l’on retrouve le plus souvent sont les suivantes :

  • Création des variables,
  • Mise à jour de la version de la Build,
  • Mise à jour des dépendances (NuGet/Npm/Maven/Gradle …),
  • Compilation,
  • Exécution des tests,
  • Publication du résultat sur Azure DevOps Server.

Avant d’exécuter un pipeline

L’exécution d’un pipeline ne se fait pas directement sur Azure DevOps Server. L’exécution se fait à l’aide d’un agent (à installer de préférence sur un autre serveur).

Pour installer l’agent, Azure DevOps met à disposition 3 versions :

  • Windows,
  • MacOs,
  • Linux.

Cela vous permet de compiler votre code dans un environnement contrôlé avec potentiellement des outils spécifiques installés sur la machine exécutant l’agent.

Exécution d’un pipeline

Une fois le scénario de compilation écrit (en YAML), il doit être exécuté.
Pour cela Azure DevOps Server propose différentes solutions :

  • exécution manuelle,
  • exécution automatique lors d’une « demande de tirage » (PullRequest),
  • exécution automatique lors d’un « envoi » (push git).

Arkance Systems France utilise la deuxième méthode. Cette dernière permet, de vérifier la validité du résultat lors de la revue du code.

Conclusion

La mise en place des pipelines n’est qu’une partie des outils proposés par Azures DevOps Server. La compilation automatisée, l’exécution systématique des tests et la publication automatisée nous ont permis d’améliorer la qualité de nos développements et de simplifier les livraisons client.