Installer son propre serveur git avec Gitolite – Partie 3

- Auto-hébergement

Attention : cet article date de 2012 et son contenu peut ne plus être à jour.
Si vous voulez installer un serveur git, cet article plus récent vous intéressera.

J’ai déjà pas mal parlé de la configuration d’un serveur git auto-hébergé, ce type de solution permet de se passer de Github (ou BitBucket) pour héberger ses dépots privés. Lors de mon premier article, je n’avais pas voulu utiliser d’outil pour faire la configuration du serveur, mais après avoir beaucoup pratiqué gitolite au travail, j’ai décidé de migrer mes dépôts de la configuration standard vers gitolite et j’ai décidé d’en profiter pour faire l’article final de cette série…

Cet article s’adresse aux personnes étant déjà à l’aise avec git. Je ne vais pas trop rentrer dans les détails techniques, si jamais vous ne comprenez pas tout, vous pouvez lire le Git Book les premières parties de la configuration d’un serveur git :

Si vous êtes déjà à l’aise avec git, oubliez la première partie car Gitolite remplace parfaitement l’environnement mis en pace lors du premier article…

Installation de gitolite

Gitolite est une surcouche de git pour installer simplement un serveur centralisé, voici quelques une de ses nombreuses qualités :

Comme gitolite est un outil simple, l’installation va prendre au maximum 5 minutes, c’est promis. Le plus long sera d’apprivoiser gitolite qui est pourtant, je me répète, très simple.
Tout d’abord, il faut créer un utilisateur “git”, le choix de l’emplacement de son “$HOME” est libre, de plus veillez bien à créer un compte qui n’a pas de mot de passe :

$> adduser --system --shell /bin/bash --group --disabled-password --home /var/git git

Ensuite, il faut installer les binaires de git et de gitolite en tant qu’utilisateur “root” si ce n’est déjà fait :

$> apt-get update && apt-get install git gitolite

L’installation de gitolite est à proprement parlé terminée, il ne reste qu’à initialiser l’outil.

Initialisation

Pour fonctionner, Gitolite a besoin de clé SSH pour authentifier les utilisateurs, il faut donc importer une clé pour un utilisateur. Je vais copier une clé que j’ai déjà sur ma machine vers le serveur, pour l’importer ensuite dans gitolite :

$> scp ~/.ssh/username.pub username@mon-serveur.fr:/tmp

Rendez-vous dans le $home de votre utilisateur git, connectez-vous en utilisateur git et saisissez la commande suivante pour initialiser le dépôt qui contiendra la configuration :

$> su git
$> gl-setup /tmp/username.pub
creating gitolite-admin...
Initialized empty Git repository in /var/git/repositories/gitolite-admin.git/
creating testing...
Initialized empty Git repository in /var/git/repositories/testing.git/
[master (root-commit) 4c6c453] start
 2 files changed, 8 insertions(+), 0 deletions(-)
 create mode 100644 conf/gitolite.conf
 create mode 100644 keydir/username.pub

Voila, c’est terminé, vous avez configuré gitolite, maintenant il ne reste plus qu’a savoir comment on utilise tous ça !

Comme vous l’avez vu dans la sortie de la commande de setup, deux repo ont été créés : “gitolite-admin” et “testing”. Le premier dépôt, c’est celui qui contient la configuration de gitolite, vous vous en doutez je vous déconseille de le supprimer
En revanche, “testing” est là pour faire des tests et nous allons en profiter pour directement le supprimer.

Prise en main de la configuration

Je sais pas expérience que Gitolite peut paraître intimidant puisque j’avais choisi de ne pas l’utiliser au début, mais en vérité c’est un outil très simple à prendre en main.

Ajouter, supprimer un dépôt

Pour pouvoir éditer la configuration, il faut justement la cloner sur notre machine à l’aide de la commande qui suit :

$> git clone git@mon-serveur.fr:gitolite-admin.git gitolite-admin

Une fois la configuration sur votre machine, ouvrez le fichier gitolite-admin/conf/gitolite.conf. Vous devriez voir les deux dépôts mentionnés lors de la création de la configuration :

repo    gitolite-admin
     RW+     =   username
 
repo    testing
     RW+     =   @all

La configuration d’un dépôt se fait avec l’utilisation du mot clé repo suivi de son nom, les lignes qui le suivent correspondent aux droits des utilisateurs authorisés de ce dépôt. Ainsi, si l’on veut supprimer un dépôt il faut supprimer la ligne repo et les authorisations associées.

Supprimer le dépôt “testing” du fichier de configuration, pour que les changements soient pris en compte par gitolite, il ne reste plus qu’à commiter, pusher la modification et le dépôt sera magiquement détruit par gitolite !

Ajouter, supprimer un utilisateur

Un utilisateur authorisé est représenté par une clé SSH publique dans le répertoire keydir. Pour ajouter un utilisateur, il suffit de copier la clé publique du nouvel utilisateur dans le dépôt dans le répertoire keydir, commiter, pusher et voila, le nouvel utilisateur peut cloner des dépôts.

Mais n’oubliez pas de configurer vos dépôts (comme vu précédement), pour que l’utilisateur puisse les cloner chez lui.

Conclusion

Gitolite est une solution gratuite, puissante, flexible pour héberger soi-même son serveur git centralisé. C’est une technique bien plus fiable et surtout moins artisanale que la technique que j’avais utilisé lors de mon premier article.

Si vous voulez héberger des dépôts privés, Gitolite vous permet d’économisez quelques dollars par mois, en annulant votre abonnement Github par exemple.