1. Livres & vidéos
  2. Le DevOps en pratique avec GitLab
  3. Introduction à GitLab
Extrait - Le DevOps en pratique avec GitLab Gestion de projets et pipelines CI/CD
Extraits du livre
Le DevOps en pratique avec GitLab Gestion de projets et pipelines CI/CD
2 avis
Revenir à la page d'achat du livre

Introduction à GitLab

Introduction

Dans ce premier chapitre, nous commencerons par proposer une définition de GitLab, puis nous esquisserons un bref historique de cette plateforme. Nous examinerons ensuite les problèmes que GitLab permet de résoudre à travers les différentes étapes du cycle de développement logiciel (Software Development Life Cycle, SDLC).

Après avoir donné un premier aperçu de GitLab et de son contexte d’émergence, nous passerons en revue les modes de déploiement, les types d’abonnements disponibles ainsi que les principaux composants de cette solution.

Pour mieux comprendre le positionnement de GitLab sur le marché, nous tenterons de le situer par rapport à des outils similaires pour voir ce qui le distingue de ses concurrents.

Nous terminerons ce premier chapitre avec la création d’un compte en ligne sur GitLab en mode SaaS, ce qui vous permettra de découvrir l’interface web et d’apprendre à vous orienter à travers les principaux menus de celle-ci.

Qu’est-ce que GitLab ?

1. Définition de GitLab

GitLab est une plateforme multifonction qui comprend de nombreux composants intégrés pour prendre en charge les étapes du cycle de développement logiciel (SDLC), depuis la planification initiale du projet jusqu’au déploiement, en passant notamment par l’analyse et la vérification du code source.

La solution est disponible en mode SaaS (Software as a Service) ou en tant qu’instance autogérée. Il s’agit de l’unique produit de la compagnie du même nom que nous présenterons dans la prochaine section.

Dans la suite de cet ouvrage, nous distinguerons l’entreprise de son produit en les nommant respectivement GitLab Inc. et GitLab.

images/01EI01.png

Logo actuel de GitLab

Bien que GitLab se présente comme une application web unique, il n’en demeure pas moins que l’outil se compose d’un ensemble complexe de technologies qui feront l’objet des prochains chapitres.

a. Une forge logicielle conçue autour de Git

Comme son nom l’indique, GitLab s’appuie sur le système de gestion de version Git pour offrir un service de forge logicielle (privé ou public) ainsi qu’un environnement collaboratif pour tout type de projet de développement.

Une forge ou forge logicielle est une plateforme qui facilite la gestion et le développement de programmes en mettant à disposition des utilisateurs des outils pour la gestion de versions, de suivi de bogues et de collaboration. Elle sert généralement d’emplacement centralisé pour héberger du texte ou du code source sous la forme de dépôts (repositories).

Plus spécifiquement, GitLab est une plateforme unifiée qui comprend un service de billetterie et de suivi d’incidents, des outils de documentation, d’intégration et de livraison ou déploiement continus (CI/CD) de même que des fonctionnalités intégrées d’analyse et de sécurisation du code source.

GitLab permet également d’héberger des pages web statiques, de surveiller les performances des applications déployées, de stocker des images Docker (ou d’autres types de packages logiciels) et elle inclut des solutions d’observabilité et de gestion de conformité.

L’observabilité dans les technologies de l’information fait référence aux techniques de journalisation, de traçabilité et de télémétrie permettant d’avoir une visibilité et une compréhension de systèmes complexes. La collecte, l’analyse ainsi que la visualisation des données d’un système permettent la détection en temps réel des anomalies et des problèmes de performances.

b. Une plateforme orientée DevOps et DevSecOps

Au fil des années, GitLab s’est rapidement distingué par l’ajout de nombreuses fonctionnalités visant à implémenter des pratiques mises en avant par le DevOps et le DevSecOps que nous examinerons en détail dans le chapitre Comprendre le cycle de développement logiciel.

Bien que la plateforme facilite la mise en œuvre de ces approches « modernes », elle ne s’y limite pas et elle peut très bien être utilisée dans le cadre de méthodologies plus traditionnelles, telles que le modèle en cascade sur lequel nous aurons également l’occasion de revenir.

GitLab vise à donner aux équipes impliquées dans la réalisation d’un projet (affaires, développement, sécurité, opérations) les moyens nécessaires pour mener à bien toutes les phases du cycle de développement logiciel.

À la date de rédaction de cet ouvrage, GitLab définit le SDLC en neuf étapes qui consistent à :

  • Planifier (Plan) : organiser le travail avec des projets, des groupes et des tickets pour diviser et assigner les tâches aux membres d’une équipe.

  • Créer (Create) : programmer, stocker et versionner son code dans Git, effectuer des revues de code ou approuver des demandes de fusion.

  • Vérifier (Verify) : faire de l’intégration continue en mettant en place des outils pour tester et analyser le code source pour s’assurer d’avoir un logiciel de qualité qui fait ce qu’il est censé faire.

  • Empaqueter (Package) : rassembler et empaqueter les composants et dépendances d’un logiciel en un format exécutable....

Bref historique de GitLab

1. Le contexte d’émergence de GitLab

Le cycle de développement logiciel ainsi que les outils qui permettent d’en optimiser la pratique ont fait l’objet de nombreux changements depuis le début des années 2000.

À cette époque, les systèmes de gestion de version (Version Control System, VCS) étaient moins axés sur la collaboration et il n’existait pas de plateforme web comme GitLab qui permette non seulement d’héberger du code source, mais aussi d’offrir de nombreux outils pour simplifier le SDLC.

De la même manière, le processus de développement logiciel comportait plusieurs tâches manuelles, ce qui avait pour conséquence d’augmenter à la fois le risque d’erreurs humaines et les délais de livraison.

À ces inconvénients s’ajoutait le fait que l’une des méthodologies les plus utilisées pendant cette période était le modèle en cascade (waterfall model) dans lequel les étapes étaient définies en phases séquentielles. Cette structure linéaire ne favorisait pas la collaboration et la rétroaction avec le client lors d’un projet de développement.

L’avènement des méthodes agiles de développement et le DevOps qui commence à émerger à la fin des années 2000 vont changer progressivement le paysage informatique. Ces approches vont mettre la collaboration et l’automatisation au centre de leurs préoccupations, ce qui va donner lieu à la création de nombreux outils permettant de mettre à profit ces nouvelles valeurs.

2. Une nouvelle forge logicielle open source

GitLab est créé en 2011 par le développeur ukrainien Dmytro Zaporozhets en collaboration avec le développeur néerlandais Sytse « Sid » Sijbrandij. Le projet est né de leur volonté de trouver une manière plus efficace de travailler en équipe en mettant l’accent sur la productivité sans toutefois multiplier les outils pour y arriver.

Au départ, il s’agissait de rendre le gestionnaire de version Git plus convivial et l’enrichir de fonctionnalités pour simplifier le processus de développement et l’interaction avec des dépôts distants. Bien que ses créateurs parviennent à améliorer l’expérience des utilisateurs en rendant la gestion de version plus efficace, GitLab demeure très similaire à GitHub : il s’agit d’une plateforme web qui offre une interface graphique construite autour de Git servant de point de dépôt centralisé pour stocker du code source.

images/01EI03.png

Premier logo de GitLab

Le logo adopté par GitLab est un chien viverrin ou « raton laveur » (« tanuki » en japonais). Selon les créateurs de la plateforme, cet animal aurait été choisi parce qu’il incarne les valeurs de l’entreprise : collaboration, open source et fiabilité (car les tanukis vivent en communauté, ils travaillent ensemble pour atteindre des objectifs communs et ils sont considérés comme des symboles de confiance et d’agilité).

C’est à partir de 2012 que GitLab commence à se distinguer des autres forges logicielles. En effet, l’idée de mettre en place une plateforme unifiée capable de prendre en charge toutes les étapes du cycle de développement logiciel se concrétise et devient l’orientation principale de GitLab.

Lors de cette même année, le site gitlab.com est lancé officiellement et les deux fondateurs décident de rendre leur projet open source, ce qui n’est pas le cas pour GitHub et Bitbucket d’Atlassian, les deux principales plateformes concurrentes. Cette initiative suscite l’intérêt de la communauté et de nombreux collaborateurs contribuent au code source du projet, notamment à la suite d’une invitation lancée par les créateurs de la plateforme sur le site Hacker News.

GitLab est alors distribué sous licence MIT, une licence de logiciel libre permissive créée au Massachusetts Institute of Technology. Celle-ci autorise toute personne à modifier, utiliser, copier ou distribuer un logiciel avec la seule obligation d’indiquer le type de licence et le copyright.

a. Conception logicielle et technologies

Dmytro Zaporozhets a conçu GitLab en Ruby avec le framework web Ruby on Rails (RoR ou Rails) et ce choix a n’a pas changé au fil des années. Pour améliorer la performance, certains composants ont été réécrits en Go avec le framework Vue.

Depuis le lancement du projet, une nouvelle version du logiciel a été rendue disponible au 22e jour de chaque mois pendant plusieurs années. Aujourd’hui, la release date est toujours mensuelle, mais elle a commencé à varier de quelques jours depuis la version 16.6 sortie...

Comparaison avec les solutions concurrentes

1. Les forges logicielles basées sur Git

Aujourd’hui, le système de gestion de version Git (que nous présenterons en détail dans le chapitre suivant) est devenu le standard de facto pour versionner du code source. Introduit en 2005 par Linus Torvalds, le créateur de Linux, ce gestionnaire de version distribué se démarque des autres notamment parce qu’il ne dépend pas d’un serveur centralisé.

a. Les solutions propriétaires : GitHub et Bitbucket

Avant la création de GitHub ou Gitorious en 2008, il existait d’autres forges logicielles telles que SourceForge (1999), Assembla (2005), Google Code (2005), Microsoft Teams Foundation Server (TFS) (2005) ou Launchpad (2009), mais elles n’étaient pas forcément dédiées à Git, ni conçues en ayant ce dernier comme composant central. En fait, elles supportaient également d’autres gestionnaires de version tels que Mercurial, Bazaar ou Subversion.

images/01EI07.png

Logo actuel de GitHub

GitHub est l’une des premières plateformes web collaboratives de développement et d’hébergement de code source construites autour de Git. En 2009, un an après son lancement, GitHub compte 100 000 utilisateurs. Ce succès immédiat s’explique notamment par son adoption par la communauté open source. L’année suivante, la plateforme héberge 1 million de dépôts et son activité dépasse celle d’autres services concurrents tels SourceForge et Google Code. GitHub révolutionne la collaboration en ligne avec Git et contribue à en faire un standard auprès des développeurs.

Bitbucket, une plateforme web similaire, est également lancée en 2008, mais elle ne s’appuie pas uniquement sur Git. Son rachat en 2010 par Atlassian en fait un concurrent direct de GitHub (et bientôt de GitLab) en offrant la possibilité de l’intégrer à son produit phare, le système de gestion d’incidents et de projets Jira.

images/01EI08.png

Logo actuel de Bitbucket

b. Les solutions open source

Comme nous l’avons indiqué plus haut, GitLab fait son apparition en 2011 et la plateforme gagne rapidement en popularité en tant qu’alternative open source à GitHub. Bien qu’offrant des fonctionnalités similaires pour héberger des dépôts Git, GitLab comprend des services supplémentaires tels qu’une solution de gestion d’incidents (issues), des outils d’intégration continue et de livraison ou déploiement continus (CI/CD) que nous présenterons plus loin.

Au fil des ans, GitLab est devenu une plateforme DevOps complète utilisée par de nombreuses organisations pour gérer toutes les étapes du cycle de développement logiciel. La solution se distingue par une nette orientation vers la sécurisation du code source et elle s’est rapidement adaptée aux solutions de type IaC de même qu’aux architectures logicielles conteneurisées.

En 2012, la plateforme open source GitBucket est lancée par JetBrains pour offrir une solution intégrée aux utilisateurs de l’environnement de développement IntelliJ IDEA. Contrairement à GitHub et GitLab, qui sont des services web hébergés permettant de gérer et de collaborer sur des projets en ligne, GitBucket est principalement conçu pour être installé et exécuté sur un serveur autohébergé.

C’est également le cas pour certaines alternatives open...

Avantages et inconvénients du modèle de GitLab

1. Une plateforme unifiée de type tout-en-un

Nous n’insisterons pas sur ce point puisque nous l’avons déjà évoqué plus haut, mais le principal avantage de GitLab est d’être un outil unifié offrant une interface graphique unique qui rassemble toutes les fonctionnalités en un seul point centralisé.

La plateforme intègre des outils pour toutes les phases du cycle de développement logiciel, ce qui permet aux composants d’un projet de circuler aisément d’une étape à l’autre sans devoir changer d’outil à chaque fois.

images/01EI11.png

Annonce du workflow DevSecOps avec GitLaben 2019

https://about.gitlab.com/blog/2019/06/20/announcing-gitlab-devsecops/

Même dans le cas d’une instance GitLab autogérée, la solution est facile à installer, à administrer et à mettre à jour, contrairement à un ensemble d’outils séparés. Quel que soit le mode de déploiement retenu, le modèle de GitLab s’avère beaucoup moins cher que d’acheter des licences individuelles pour une série d’outils distincts.

Cependant, pour les petites équipes qui n’ont pas besoin d’une plateforme aussi complète que GitLab, le recours à quelques fonctionnalités peut être largement suffisant.

2. Une plateforme permettant de nombreuses intégrations

Une autre des grandes forces de la plateforme est d’offrir la possibilité d’intégrer de nombreux produits tiers afin d’adapter le service à des besoins et des flux de travail spécifiques.

En date de rédaction de cet ouvrage, GitLab s’intègre avec 41 solutions tierces, dont :

  • Confluence : une plateforme de collaboration en équipe développée par Atlassian, permettant la création, l’organisation et le partage de documents et de projets.

  • Discord : un service de communication tout-en-un, populaire parmi les communautés de jeu, offrant notamment des salons de discussion vocale, vidéo ou texte.

  • GitHub : comme nous l’avons déjà mentionné plus haut, il s’agit d’un service de gestion de version et de développement collaboratif basé sur Git qui permet de gérer et de partager des projets de programmation.

  • Google Cloud IAM (Identity and Access Management) : un service de gestion des accès et des identités pour sécuriser l’accès aux ressources Google Cloud.

  • Jenkins : tel que nous l’avons présenté précédemment, il s’agit d’un serveur d’intégration continue open source permettant d’automatiser des parties du développement logiciel, notamment les builds, les tests...

Les modes d’utilisation de GitLab

1. Les types de déploiements de GitLab

GitLab est offert en mode SaaS (Software as a Service) ou autogéré (self-managed), c’est-à-dire comme une application installable sur diverses plateformes telles que Linux, Docker ou Kubernetes. Il n’existe pas à ce jour d’installation sous Windows.

Depuis 2016, ces deux offres se déclinent en deux éditions :

  • GitLab Community Edition ou CE ;

  • GitLab Enterprise Edition ou EE.

L’édition EE se divise elle-même en deux souscriptions :

  • Ultimate ;

  • Premium.

Les instances GitLab autogérées sont également disponibles en mode préconfiguré via les « marketplaces » des principaux fournisseurs de services cloud tels que Google Cloud Platform (GCP), AWS ou Microsoft Azure.

2. Les éditions de GitLab

a. GitLab Community Edition

L’édition « community » est une version open source dédiée aux projets personnels. Elle est gratuite et l’ouverture d’un compte ne nécessite pas de carte de crédit. Cette offre s’applique autant pour la plateforme web gitlab.com que pour une instance autogérée, mais elle n’inclut pas de support.

En date de rédaction de ce livre, l’offre SaaS comprend :

  • 5 Go de stockage ;

  • 10 Go de transfert par mois ;

  • 400 minutes de traitement (temps d’exécution de pipelines) par mois ;

  • cinq utilisateurs par groupe de ressources ;

  • il n’y a aucune limitation pour les instances autogérées.

b. GitLab Enterprise Edition

L’édition Enterprise se divise en deux souscriptions :

  • Premium ;

  • Ultimate (et Ultimate Dedicated).

Premium

En plus de tous les services disponibles dans la version gratuite, la souscription Premium ($29 USD par mois par utilisateur, payable annuellement) comprend :

  • des mécanismes et des règles d’approbation du code source ;

  • des fonctionnalités de planification de travail d’équipe.

  • des fonctionnalités CI/CD avancées ;

  • des fonctionnalités de gestion des utilisateurs et des incidents ;

  • du support de niveau entreprise ;

  • 50 Go de stockage ;

  • 100 Go de transfert par mois ;

  • 10 000 minutes de traitement (temps d’exécution de pipelines) par mois.

Ultimate

La souscription Ultimate contient tout ce qui est inclus dans l’offre Premium et plusieurs autres options telles que :

  • des fonctionnalités de Dynamic Application Security Testing (DAST) ;

  • des tableaux de bord (dashboards) de sécurité ;

  • des fonctionnalités de gestion des vulnérabilités ;...

Prise en main de GitLab

Dans cette section, nous allons ouvrir un compte sur le site gitlab.com et présenter les principales options de l’interface web.

1. Créer un compte GitLab en mode SaaS

 Pour créer un compte sur la plateforme web GitLab, rendez-vous sur la page d’accueil à l’adresse https://about.gitlab.com/.

 Appuyez sur Get free trial afin de commencer votre inscription.

images/01EI12.png

 Entrez vos coordonnées et complétez l’inscription pour obtenir votre compte, puis appuyez sur Continuer. Un code de vérification vous sera envoyé par e-mail.

Vous aurez accès au forfait GitLab Ultimate pour 30 jours, mais les fonctionnalités incluses dans un compte personnel gratuit sont suffisantes pour les besoins de cet ouvrage.

images/01EI13.png

 Des informations vous seront demandées pour personnaliser votre expérience. Remplissez les champs et précisez que vous ferez un usage personnel de la plateforme.

Vous devrez ensuite créer ou importer un premier projet qui sera placé dans un groupe. Ces notions seront abordées en détail dans le chapitre Organiser et suivre son travail dans GitLab. Il en va de même pour les modèles (templates) de projets et la création d’un fichier README. Pour l’instant, vous pouvez donner des noms temporaires que nous pourrons modifier par la suite.

 Appuyez sur Create project pour passer à l’étape suivante.

images/01EI14.png

Pour la dernière étape de l’inscription, GitLab vous suggère d’inviter des collègues, c’est-à-dire des utilisateurs ayant déjà un compte sur la plateforme.

Pour le chapitre Organiser et suivre son travail dans GitLab de cet ouvrage, nous vous invitons à créer un deuxième compte pour mieux comprendre comment utiliser GitLab de manière collaborative. Ce deuxième utilisateur pourra notamment être ajouté à des projets et servir d’approbateur pour les « merge requests ».

 Cliquez sur Cancel.

images/01EI15.png

La création de votre compte GitLab est maintenant complétée.

images/01EI16.png

Nous pouvons commencer à découvrir l’interface web et apprendre à nous orienter à travers les différents menus qui la composent.

2. Configurations initiales

a. Modifier la langue d’affichage et le format de l’heure

Avant d’aller plus loin, voyons comment nous pouvons modifier la langue de l’interface web pour que l’affichage soit en français.

Comme cet ouvrage est rédigé pour un public francophone, nous utiliserons l’interface GitLab dans sa traduction française. Si vous préférez travailler en anglais, vous ne devriez pas avoir de difficulté à vous retrouver car l’emplacement des items dans les menus reste le même d’une langue à l’autre. Il reste encore quelques parties qui ne sont pas traduites en français, mais elles sont minimes et elles ne devraient pas nuire à votre compréhension.

 Appuyez sur l’icône (cercle coloré) qui représente votre utilisateur à droite du logo GitLab dans le menu principal, puis cliquez sur Preferences.

images/01EI17.png

Dans Preferences, vous pouvez changer l’apparence de l’interface ou choisir un autre thème de navigation.

 Pour modifier la langue d’affichage, descendez jusqu’à la section Localization. Sous Language, sélectionnez French. Si vous souhaitez modifier le format de l’heure, rendez-vous plus bas sous Time preferences et sélectionnez 24-hour. Appuyez sur le bouton Save changes pour que les changements s’appliquent.

images/01EI18.png

 Rafraîchissez votre navigateur pour voir l’interface s’afficher en français.

b. Personnaliser le profil utilisateur

 Pour personnaliser votre profil, appuyez une nouvelle fois sur l’icône qui représente votre utilisateur et sélectionnez Modifier le profil pour accéder aux Paramètres utilisateur.

images/01EI19.png

Ici, vous pouvez téléverser un nouvel Avatar public en cliquant sur Choisir un fichier.

 Pour définir votre fuseau horaire, rendez-vous sous Paramètres de l’heure et faites votre choix parmi les options du menu déroulant. Lorsque vous avez terminé, appuyez sur Mettre à jour les paramètres du profil.

images/01EI20.png

Plus bas, vous pouvez renseigner les champs Paramètres principaux pour ajouter des précisions sur votre travail et rédiger une courte biographie.

 Si vous préférez que votre compte et vos activités ne soient visibles que par vous (ou un administrateur dans le cas d’une instance GitLab d’entreprise), vous pouvez cocher l’option Profil privé. Appuyez ensuite sur Mettre à jour les paramètres du profil.

images/01EI21.png

c. Modifier le nom d’utilisateur

Avant de commencer à utiliser GitLab, vous souhaiterez peut-être modifier votre nom d’utilisateur. Il est préférable de le faire le plus tôt possible pour éviter de causer des problèmes de redirection par la suite.

 Toujours dans...

Conclusion

Dans ce chapitre, nous avons défini et esquissé un bref historique de GitLab tout en mettant en lumière les problèmes que la plateforme propose de résoudre. Ensuite, une présentation des solutions concurrentes nous a permis de voir quels sont les éléments distinctifs de GitLab. Le point fort de la plateforme est de centraliser de nombreux outils qui simplifient le processus de développement. 

Avec GitLab, la plupart des tâches du SDLC peuvent être réalisées en utilisant une interface graphique unique qui, comme nous le verrons notamment dans le chapitre Les pipelines CI/CD dans Gitlab, permet aussi de visualiser les résultats des opérations et l’état des déploiements.

Afin de mettre en lumière les éléments distinctifs de GitLab, le chapitre qui suit présentera les caractéristiques du cycle de développement logiciel traditionnel ainsi que les approches modernes telles que le DevOps et le DevSecOps qui sont au cœur de la conception et de l’implémentation de la plateforme.