Installer son propre serveur git avec Gitolite – Partie 3
- Auto-hébergement
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 :
- gestion facile de multiples utilisateurs,
- configuration de l’authentification avec des clés SSH,
- gestion de la configuration via un dépôt,
- configuration des dépôts avec un fichier plat.
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.