Gitolite pour gérer ses dépôts.

Gitolite est un outil permettant de gérer facilement des dépôts git à l’aide d’un utilisateur sur un serveur. Il fournit un accès pour plusieurs développeurs, sans donner un accès réel à un shell. Il utilise le système de clé ssh. Il est écrit par Sitaram Chamarty, dans le langage Perl, et inspiré de Gitosis. Gitolite permet d’attribuer des droits spécifique, à un utilisateur, comme la lecture,1 l’écriture2 pour un dépôt. Il est aussi possible d’attribuer des droits pour des branches ou des tags, pratique dans un environnement d’entreprise, ou dans la gestion de certains projets, par exemple. Gitolite peut être installé sans les droits root, et sans logiciel supplémentaires, uniquement Git et Perl.

Pour l’installation, il y a plusieurs manière de procéder. Pour les utilisateurs de Debian, Ubuntu, Fedora, et certainement d’autres, il est possible d’utiliser le système de package de sa distribution. Il est aussi possible de lancer l’installation avec un script fourni par le projet, c’est la solution que j’utilise et c’est donc celle que je vais présenter.
Comme je l’ai dit plus haut, Gitolite peut être installé sans utiliser les droits root. J’ai donc préféré créer un utilisateur particulier pour gérer l’installation, c’est aussi l’utilisateur qui va gérer les dépôts Git. En utilisant pas le compte root, ça permettra de laisser à d’autres utilisateurs auquel on fait suffisamment confiance, un accès à la configuration des dépôts Git, sans pour autant qu’ils aient les droits root. On ajoutera donc leurs clés publiques dans /home/gitadmin/.ssh/authorized_keys.

    adduser gitadmin
    adduser git

Ensuite nous allons prendre l’identité de l’utilisateur nouvellement créé gitadmin, et nous allons générer une paire de clé, qu’on ajoutera à la liste des clés autorisé de git.

    sudo su gitadmin
    ssh-keygen -t dsa -b 1024
    ssh-copy-id -i ~/.ssh/id_dsa.pub git@localhost

Il est maintenant possible de passer à l’installation. On commence par récupérer les sources de projet, en clonant le projet. On se déplace dans le projet et on lance le script d’installation.

    git clone http://github.com/sitaramc/gitolite.git
    cd gitolite/src
    ./gl-easy-install git localhost gitadmin

Les options qu’on passe en paramètre au script d’installation, signifie que l’utilisateur git hébergera les dépôts, le serveur ici on est connecté dessus donc localhost, et l’utilisateur gitadmin pour l’administration des dépôts.

Une série de question vous sera posées, vous pourrez laisser les options par défaut. Il sera aussi demandé une passphrase qu’on peut laisser vide.

Une fois l’installation terminé, on peut commencer à voir comment fonctionne la configuration. On se déplace dans le répertoire gitolite-admin, toujours avec l’utilisateur gitadmin bien-sûr.3 Pour ajouter un utilisateur, il faut ajouter sa clé publique dans le dossier keydir, commiter et ne pas oublier de pusher, car c’est au moment des hooks que la configuration prend effet.

    cp /home/hobbestigrou/id_dsa.pub keydir/hobbestigrou.pub
    git add keydir/hobbestigrou.pub
    git commit
    git push

Si tout comme moi, d’autres personnes on plusieurs clés pour le même utilisateur, il y a une syntaxe particulière à utiliser.

hobbestigrou@hobbyone.pub
hobbestigrou@work.pub

Le nom après le arobase peut-être ce que l’on souhaite.
Pour supprimer un utilisateur, il faut supprimer sa clé.

    git rm keydir/exemple.pub
    git commit
    git push

Passons maintenant à la gestion des dépôts. Actuellement, deux dépôts sont déjà existant. Il y a bien entendu, le dépôt git-admin et un dépôt appelé testing. On constate que la syntaxe et assez claire et simple à comprendre. Si on ajoute le nom d’un dépôt qui n’existe pas encore, il sera créé automatiquement et placé dans le répertoire /home/git/repository.

    repo    exemple
            RW+ = hobbestigrou

On a donc un dépôt exemple, avec l’utilisateur hobbestigrou qui a les droits en lecture, écriture et rewind permissions, c’est-à-dire la possibilités de supprimer des étapes du projet.

R: Droit en lecture uniquement,
RW: droit en lecture et écriture,
RW+: droit de lecture, écriture et rewind permission.

Il est aussi possible de gérer des groupes. Il existe déjà un groupe qui est @all, il est utilisé pour le dépôt testing, cela correspond donc à tous les utilisateurs.

    @new_group = utilisateur1 utilisateur2 utilisateur3

Il sera maintenant possible d’utiliser @new_group.

Il est aussi possible d’ajouter uniquement des droits sur une branche d’un dépôt. Je n’ai pas encore eu ce besoin, pour plus d’information à ce sujet vous pouvez consulter un exemple de configuration https://github.com/sitaramc/gitolite/blob/master/conf/example.conf.

Pour récupérer un projet, ça utilise ssh.

    git clone git@host.com:exemple.git

On clone le projet exemple sur host.com.

En conclusion, je trouve que c’est outil vraiment très pratique, agréable et puissant. Il est très facile à configurer et à maintenir. Mes cas d’utilisation sont assez simple, je l’utilise pour certains fichiers de configuration sensibles, certains projets dont je ne peux pas libérer le code source, tous mes projets que je mets aussi sur github ça me permet de commencer doucement mes projets sans que tout le monde ait une vue, lorsque c’est vraiment un embryon, articles et présentation pour conférences, et aussi pour des projets en collaboration avec d’autres développeurs.

Drapeau En Gitolite sur github

  1. Donc le clone et fetch
  2. push
  3. Utilisateur qui gère la configuration
Vus : 1225
Publié par Hobbestigrou : 195