Solution Open Source et complète d’hébergement de projets Git

GitLab

Solution Open Source et complète d’hébergement de projets Git

GitLab

Git, outil de gestion de versions de code source, s’est répandu très rapidement dans la communauté Open Source, de part sa rapidité, sa flexibilité et sa fiabilité. Les solutions d’hébergement en ligne de projets Git connaissent un énorme succès, mais leur utilisation est bien souvent payante pour l’hébergement de projets privés. GitLab est une solution gratuite et Open Source pour l’hébergement de projets Git privés comparable aux géants tels que GitHub et BitBucket et qui convient aux entreprises.

Introduction

Le 18 mai 2013, Sebastien Dawans du CETIC a présenté Git aux jeudis du libre à Mons suite au retour d’expériences sur l’utilisation croissante de Git dans les activités du CETIC. Cette présentation orientée sur Git et ses workflows de développement courants est consultable en ligne. Lors de la présentation, nous avons survolé quelques possibilités d’hébergement de Git, et avons débattu du manque de solution d’hébergement Git privée, gratuite et avec toutes les fonctionnalités offertes par GitHub. Un des participants nous a alors fait remarquer que GitLab était récemment devenu très stable, ce qui nous a poussé à l’évaluer. Notre évaluation positive a résulté sur une adoption de GitLab qui est rapidement devenu la solution générale pour l’ensemble des projets Git du CETIC. Il était effectivement temps de se mettre au goût du jour !

Qu’est-ce Git ?

Git est un outil de gestion de version de code source développé initialement par Linus Torvalds en 2005 pour la gestion du kernel Linux. Depuis, Git s’est rapidement répandu, surtout dans la communauté Open Source, de par sa rapidité, flexibilité, fiabilité et sa nature distribuée, tous des aspects qui le distinguent d’outils plus anciens tels que Subversion (SVN).

L’hébergeur Git le plus connu et le plus utilisé est GitHub, qui offre de l’hébergement gratuit de projets publics, et propose une version payante pour particuliers ou entreprises, pour des projets privés. Bitbucket d’Altassian se distingue de GitHub en offrant des projets privés gratuits pour un nombre limité de collaborateurs par projet. Enfin, ces hébergeurs disposent tous des services payants de déploiement de serveurs Git privés en self-hosting auprès d’entreprises.

GitLab, fortement inspiré de GitHub, est entièrement Open Source et s’adresse comme solution gratuite d’hébergement de projets Git.

Aperçu des fonctionnalités de GitLab

Avant de rentrer dans les détails de mise en œuvre de GitLab, passons en revue les fonctionnalités offertes aux utilisateurs et administrateurs.

Premièrement, et surtout, GitLab propose une interface web complète et épurée. Toute solution d’hébergement web de projets Git permet de visualiser ses différents projets, l’état et l’évolution des branches et l’historique du projet, chose qui peut également être faite avec un grand nombre d’outils de visualisation de repositories Git locaux tel que Gitk. Les solutions d’hébergement web apportent surtout une valeur ajoutée via les services autour de Git, comme pour le cas de GitLab :

  • La collaboration entre utilisateurs :
    • La revue de code, allant de l’annotation d’un ensemble de commits jusqu’à l’annotation de lignes de code individuelles dans un commit particulier.
    • Le suivi de bugs et fonctionnalités dans un bugtracker.
    • La définition de milestones d’évolution du projet.
    • Un système de notification par mail et flux RSS.
    • Un tableau de bord inter-projets pour ne rien rater.

  • L’administration de projets Git :
    • Tout utilisateur dispose de droits de création de repositories, dans son namespace personnel ou dans un namespace de groupe, pour rassembler des repositories liés et partagés entre plusieurs utilisateurs.
    • Un repository dans un namespace personnel ou de groupe est accessible aux utilisateurs suivant un système de permissions, bien plus riche que celui de GitHub : none, guest, reporter, developer et master.
    • La notion d’équipe facilite l’attribution de droits d’accès à une liste de repositories avec un certain niveau de permission à un ensemble d’utilisateurs.
  • L’administration du service GitLab :
    • La gestion complète des projets, équipes et groupes.
    • L’élévation des droits de certains utilisateurs pour des actions qui permettent de déléguer l’administration sans compromettre la sécurité de l’outil, comme donner la possibilité à un utilisateur de créer soi-même des équipes et des namespaces de groupes.

GitLab offre une richesse d’utilisation et d’administration qui convient pour une utilisation en entreprise. Pourquoi ne pas prendre quelques minutes pour une démo ?

Déploiement d’un serveur de production GitLab

GitLab est basé sur du Ruby on Rails, et tourne sur un serveur web Puma depuis la version 5.1 (précédemment : unicorn). GitLab s’interface avec Gitlab-shell depuis la 5.0, pour remplacer Gitolite. GitLab est un projet très actif : un cycle de releases mensuel apporte des modifications importantes à chaque itération. Le remplacement de Unicorn et Gitolite ne sont que deux exemples parmi d’autres de changements majeurs réguliers pour résoudre des problèmes de scalabilité de la solution à l’échelle de grosses entreprises. Heureusement, les procédures de migration sont toutes aussi simples et bien documentées que la procédure d’installation. Nous en résumons ici les étapes importantes.

Pour déployer, il faut commencer par se procurer une machine de production avec un Linux récent (Ubuntu 12.04, Debian Wheezy) et 1Go de RAM. La procédure d’installation peut être suivie à la lettre sans crainte ; c’est d’ailleurs le mode recommandé afin d’avoir exactement le même environnement que celui de référence, ce qui facilite grandement les procédures de mise à jour. Dans l’ordre, on installera des dépendances depuis les dépôts debian, un serveur mail (postfix) et Ruby depuis les sources. Ensuite vient la configuration d’un utilisateur Git, Gitlab-shell, une base de données MySQL ou PostgreSQL et un serveur web, nginx par défaut. Enfin, quelques commandes rails permettent de lancer un serveur de production et installer les services nécessaires.

Le reste des opérations d’administration se font via l’interface web. Pour les backups, une commande rails permet d’archiver les repositories Git, les DBs contenant les données du frontend et les fichiers uploadés dans un tar.gz unique, facilement transférable sur un machine de backup par un CRON journalier.

S’organiser en entreprise avec GitLab

Les options d’administration de GitLab se prêtent bien à l’utilisation en entreprise. Voici certaines configurations qui facilitent l’exploitation de GitLab au CETIC :

  • Chaque personne inscrite sur le GitLab CETIC fait partie d’au moins 1 équipe, les équipes de base par défaut étant une équipe par département et une équipe regroupant les comptes des utilisateurs externes. Cela permet l’inclusion à tous les utilisateurs à des projets globaux de type test de GitLab ou des projets d’annonces liés au service.
  • La notion de groupes permet de rassembler des repositories liés à un même projet de recherche ou une même entreprise dans le cadre d’une étude de cas industrielle.
  • Chaque utilisateur dispose de son propre namespace, qui s’avère être très pratique pour initier des projets avant de les transférer à d’autres namespaces au besoin.

Au cours des deux mois d’utilisation de GitLab, 50 utilisateurs participent à 32 repositories, regroupés dans 12 namespaces de groupes et quelques namespaces personnels. Aucun problème fonctionnel ou de performance n’a été constaté jusqu’à présent, faisant de GitLab notre outil de gestion Git de référence.

Plus d’informations

N’hésitez pas à prendre contact avec Sebastien Dawans du CETIC pour plus d’informations sur l’utilisation de Git ou GitLab.