Git 🌙
Chapters â–Ÿ 2nd Edition

4.8 Git sur le serveur - GitLab

GitLab

GitWeb reste tout de mĂȘme simpliste. Si vous cherchez un serveur Git plus moderne et complet, il existe quelques solutions libres pertinentes. Comme GitLab est un des plus populaires, nous allons prendre son installation et son utilisation comme exemple. Cette solution est plus complexe que l’option GitWeb et demandera indubitablement plus de maintenance, mais elle est aussi plus complĂšte.

Installation

GitLab est une application web reposant sur une base de donnĂ©es, ce qui rend son installation un peu plus lourde que certains autres serveurs Git. Celle-ci est heureusement trĂšs bien documentĂ©e et supportĂ©e. GitLab recommande fortement d’installer GitLab sur votre serveur via le paquet officiel Omnibus GitLab.

Les autres options d’installation de GitLab sont :

  • GitLab Helm chart, pour une utilisation avec Kubernetes,

  • des paquets GitLab dockerisĂ©s pour une utilisation dans Docker,

  • depuis les fichiers source,

  • Avec un fournisseur Cloud tel que AWS, Google Cloud Platform, Azure, OpenShift et Digital Ocean.

Pour de plus amples informations, référez-vous au readme de GitLab Community Edition (CE).

Administration

L’interface d’administration de GitLab passe par le web. Pointez simplement votre navigateur sur le nom d’hĂŽte ou l’adresse IP oĂč GitLab est hĂ©bergĂ© et identifiez-vous comme administrateur. L’utilisateur par dĂ©faut est admin@local.host et le mot de passe par dĂ©faut est 5iveL!fe (qu’il vous sera demandĂ© de changer dĂšs la premiĂšre connexion). Une fois identifiĂ©, cliquez sur l’icĂŽne « Admin area » dans le menu en haut Ă  droite.

L’entrĂ©e « Admin area » dans le menu GitLab.
Figure 50. L’entrĂ©e « Admin area » dans le menu GitLab.

Utilisateurs

Les utilisateurs dans GitLab sont des comptes qui correspondent Ă  des personnes. Les comptes utilisateurs ne sont pas trĂšs complexes ; ce sont principalement des collections d’informations personnelles rattachĂ©es Ă  chaque information d’identification. Chaque compte utilisateur fournit un espace de nommage, qui est un rassemblement logique des projets appartenant Ă  cet utilisateur. Si l’utilisateur jane a un projet appelĂ© projet, l’URL du projet est https://serveur/jane/projet.

L’écran d’administration des utilisateurs GitLab.
Figure 51. L’écran d’administration des utilisateurs GitLab.

Il existe deux maniĂšres de supprimer un utilisateur. Bloquer (Blocking) un utilisateur l’empĂȘche de s’identifier sur l’instance Gitlab, mais toutes les donnĂ©es sous l’espace de nom de cet utilisateur sont prĂ©servĂ©es, et les commits signĂ©s avec l’adresse courriel de cet utilisateur renverront Ă  son profil.

DĂ©truire (Destroying) un utilisateur, par contre, l’efface complĂštement de la base de donnĂ©es et du systĂšme de fichiers. Tous les projets et les donnĂ©es situĂ©es dans son espace de nom sont effacĂ©s et tous les groupes qui lui appartiennent sont aussi effacĂ©s. Il s’agit clairement d’une action plus destructive et permanente, et son usage est assez rare.

Groupes

Un groupe GitLab est un assemblage de projets, accompagnĂ© des informations de droits d’accĂšs Ă  ces projets. Chaque groupe a un espace de nom de projet (de la mĂȘme maniĂšre que les utilisateurs), donc si le groupe formation a un projet matĂ©riel, son URL sera https://serveur/formation/matĂ©riel.

L’écran d’administration des groupes GitLab.
Figure 52. L’écran d’administration des groupes GitLab.

Chaque groupe est associĂ© Ă  des utilisateurs, dont chacun dispose d’un niveau de permissions sur les projets du groupe et sur le groupe lui-mĂȘme. Ces niveaux s’échelonnent de invité : Guest (tickets et discussions seulement) Ă  propriĂ©taire : Owner (contrĂŽle complet du groupe, ses membres et ses projets). Les types de permissions sont trop nombreux pour ĂȘtre Ă©numĂ©rĂ©s ici, mais GitLab fournit un lien trĂšs utile sur son Ă©cran d’administration.

Projets

Un projet GitLab correspond grossiĂšrement Ă  un dĂ©pĂŽt Git unique. Tous les projets appartiennent Ă  un espace de nom unique, que ce soit un utilisateur ou un groupe. Si le projet appartient Ă  un utilisateur, le propriĂ©taire du projet contrĂŽle directement les droits d’accĂšs au projet ; si le projet appartient Ă  un groupe, le niveau de permission de l’utilisateur pour le groupe est aussi pris en compte.

Tous les projets ont un niveau de visibilitĂ© qui permet de contrĂŽler qui a accĂšs en lecture aux pages et au dĂ©pĂŽt de ce projet. Si un projet est privĂ© (Private), l’accĂšs au projet doit ĂȘtre explicitement accordĂ© par le propriĂ©taire du projet Ă  chaque utilisateur. Un projet interne (Internal) est visible par tout utilisateur identifiĂ©, et un projet public (Public) est un projet visible par tout le monde. Notez que ces droits contrĂŽlent aussi bien les accĂšs pour git fetch que les accĂšs Ă  l’interface utilisateur web du projet.

Crochets (Hooks)

GitLab inclut le support pour les crochets, tant au niveau projet que systĂšme. Pour ces deux niveaux, le serveur GitLab lance des requĂȘtes HTTP POST contenant un JSON de description lorsque certains Ă©vĂ©nements prĂ©cis arrivent. C’est une excellent moyen de connecter vos dĂ©pĂŽts Git et votre instance GitLab avec le reste de vos automatisations de dĂ©veloppement, telles que serveurs d’intĂ©gration continue, forum de discussion et outils de dĂ©ploiement.

Usage de base

La premiĂšre chose Ă  faire avec GitLab est de crĂ©er un nouveau projet. Pour cela, il suffit de cliquer sur l’icĂŽne + sur la barre d’outils. On vous demande le nom du projet, Ă  quel espace de nom il appartient, et son niveau de visibilitĂ©. La plupart des configurations demandĂ©es ici ne sont pas permanentes et peuvent ĂȘtre rĂ©ajustĂ©es plus tard grĂące Ă  l’interface de paramĂ©trage. Cliquez sur Create Project pour achever la crĂ©ation.

Une fois le projet crĂ©Ă©, on peut le connecter Ă  un dĂ©pĂŽt Git local. Chaque projet est accessible sur HTTPS ou SSH, qui peuvent donc ĂȘtre utilisĂ©s pour un dĂ©pĂŽt distant. Les URLs sont visibles en haut de la page du projet. Pour un dĂ©pĂŽt local existant, cette commande crĂ©e un dĂ©pĂŽt distant nommĂ© gitlab pointant vers l’hĂ©bergement distant :

$ git remote add gitlab https://serveur/espace_de_nom/projet.git

Si vous n’avez pas de copie locale du dĂ©pĂŽt, vous pouvez simplement taper ceci :

$ git clone https://serveur/espace_de_nom/projet.git

L’interface utilisateur web donne accĂšs Ă  diffĂ©rentes vues utiles du dĂ©pĂŽt lui-mĂȘme. La page d’accueil de chaque projet montre l’activitĂ© rĂ©cente et des liens alignĂ©s en haut vous mĂšnent aux fichiers du projet et au journal des commits.

Coopérer

Le moyen le plus simple de coopĂ©rer sur un projet GitLab consiste Ă  donner Ă  un autre utilisateur un accĂšs direct en Ă©criture sur le dĂ©pĂŽt Git. Vous pouvez ajouter un utilisateur Ă  un projet en sĂ©lectionnant la section Members des paramĂštres du projet et en associant le nouvel utilisateur Ă  un niveau d’accĂšs (les diffĂ©rents niveaux d’accĂšs sont abordĂ©s dans Groupes). En donnant un niveau d’accĂšs Developer ou plus Ă  un utilisateur, cet utilisateur peut pousser des commits et des branches directement sur le dĂ©pĂŽt sans restriction.

Un autre moyen plus dĂ©couplĂ© de collaborer est d’utiliser des requĂȘtes de tirage (pull request). Cette fonction permet Ă  n’importe quel utilisateur qui peut voir le projet d’y contribuer de maniĂšre contrĂŽlĂ©e. Les utilisateurs avec un accĂšs direct peuvent simplement crĂ©er une branche, pousser des commits dessus et ouvrir une requĂȘte de tirage depuis leur branche vers master ou toute autre branche. Les utilisateurs qui n’ont pas la permission de pousser sur un dĂ©pĂŽt peuvent en faire un fork (crĂ©er leur propre copie), pousser des commits sur cette copie et ouvrir une requĂȘte de tirage depuis leur fork vers le projet principal. Ce modĂšle permet au propriĂ©taire de garder le contrĂŽle total sur ce qui entre dans le dĂ©pĂŽt et quand, tout en autorisant les contributions des utilisateurs non fiables.

Les requĂȘtes de fusion (merge requests) et les problĂšmes (issues) sont les principaux moyens pour mener des discussions au long cours dans GitLab. Chaque requĂȘte de fusion permet une discussion ligne par ligne sur les modifications proposĂ©es (qui permettent une sorte de revue de code lĂ©gĂšre), ainsi qu’un fil de discussion gĂ©nĂ©ral. RequĂȘtes de fusion et problĂšmes peuvent ĂȘtre assignĂ©s Ă  des utilisateurs ou assemblĂ©s en jalons (milestones).

Cette section se concentre principalement sur les parties de GitLab dĂ©diĂ©es Ă  Git, mais c’est un systĂšme assez mature qui fournit beaucoup d’autres fonctions qui peuvent aider votre Ă©quipe Ă  coopĂ©rer. Parmi celles-ci figurent les wikis, les murs de discussion et des outils de maintenance du systĂšme. Un des bĂ©nĂ©fices de GitLab est que, une fois le serveur paramĂ©trĂ© et en marche, vous n’aurez pas besoin de bricoler un fichier de configuration ou d’accĂ©der au serveur via SSH ; la plupart des tĂąches gĂ©nĂ©rales ou d’administration peuvent se rĂ©aliser Ă  travers l’interface web.

scroll-to-top