URL: https://linuxfr.org/users/postroutine/journaux/serveur-git-avec-gitolite Title: Serveur Git avec Gitolite Authors: Yuul B. Alwright Date: 2017年05月29日T22:28:23+02:00 License: CC By-SA Tags: git et gitolite Score: 30 Bonjour 'nal La semaine dernière, j'ai eu l'occasion de jouer un peu avec un outil fort sympathique: Gitolite. Il permet de transformer un ordinateur avec un serveur SSH en serveur Git et de gérer les accès de plusieurs développeurs sur plusieurs dépôts Git. Contexte ======== [Git](https://git-scm.com/) est un excellent [gestionnaire de version](https://fr.wikipedia.org/wiki/Logiciel_de_gestion_de_versions). L'un de ses points forts est de permettre de travailler de façon non centralisée. Chaque développeur possède une copie locale du dépôt et peut y faire des commits sans être connecté à un serveur. Pour échanger ses modifications avec d'autres développeurs, il est possible d'[envoyer ces dernières par e-mail](https://git-scm.com/docs/git-send-email). Git possède des options pour [exporter](https://git-scm.com/docs/git-format-patch) ses commits (ou des branches entières) avant envoi et de les [réimporter](https://git-scm.com/docs/git-am) à leur réception. Mais si envoyer ses modifications par e-mail fonctionne bien pour des contributions intermittentes, cette méthode devient lourde quand on travaille en équipe et qu'on apporte beaucoup de modifications à son code. Par chance, il suffit aux développeurs d'avoir un accès SSH commun à un ordinateur et d'y installer Git pour pouvoir s'en servir comme "serveur de référence". Chacune et chacun peut y "pousser" ses modifications et "tirer" celles des autres. Mais la solution ci-dessus amène son lot de problèmes: Comment gérer la création de dépôts? Comment gérer les droits d'accès? Comment éviter de donner l'accès à un shell à tout le monde? C'est à ces questions que Gitolite répond. Et plutôt bien. Installation de Gitolite ======================== Cette opération se fait en deux étapes: - Installer de paquet Gitolite - Configurer un compte utilisateur sur le serveur pour accueillir Gitolite Pour la première étape, si vous êtes sur Fedora, tapez la commande: ``` {.bash} sudo dnf install -y gitolite3 ``` Si vous êtes sur CentOS avec le [dépôt EPEL](https://fedoraproject.org/wiki/EPEL) installé, préférez: ``` {.bash} sudo yum install -y gitolite3 ``` Et si vous êtes sur Debian, tapez la commande: ``` {.bash} sudo apt-get install gitolite3 ``` Pour la seconde étape, on va commencer par créer un utilisateur qui va accueillir les dépôts Git: ``` {.bash} sudo useradd git ``` Ensuite, on copie la clé SSH publique de l'administrateur de Gitolite dans le dossier `home` de ce nouveau compte: ``` {.bash} sudo install -o git -g git /home/git/.pub ``` Remplacez `` par le chemin vers votre clé publique et `` par votre nom utilisateur Avant dernière action, lancez la configuration de Gitolite pour l'utilisateur `git`: ``` {.bash} sudo -u git gitolite setup -pk /home/git/.pub ``` Enfin, supprimez la clé SSH publique qui n'est plus nécessaire: ``` {.bash} sudo rm /home/git/.pub ``` Pour tester si l'installation s'est bien passée, il faut un compte utilisateur possédant la clé SSH privée liée à la clé publique utilisée plus haut. Depuis ce compte, exécutez la commande: ``` {.bash} ssh git@ info ``` Où `` sera l'adresse de l'ordinateur hébergeant Gitolite. Vous devriez avoir la réponse suivante: ``` {.bash} hello user, this is git@my_server running gitolite3 on git 2.9.4 R W gitolite-admin R W testing ``` C'est fait, vous avez un Gitolite tout frais et fonctionnel. Administration ============== Toute la configuration de Gitolite se passe depuis le dépôt `gitolit-admin` de votre installation. Pour commencer, clonez le: ``` {.bash} git clone git@:gitolite-admin ``` (N'oubliez pas de remplacer `` par l'adresse du vôtre) Dans le dépôt fraîchement cloné, on retrouve cette arborescence: ``` {.bash} gitolite-admin/ ├── conf │ └── gitolite.conf └── keydir └── bob.pub ``` Dans le dossier `keydir` se trouve la clé SSH publique de toutes celles et ceux qui auront accès à votre serveur Gitolite. Le nom de ces fichiers est important. Il suit la forme `utilisateur.pub`. L'utilisateur indiqué dans le nom du fichier sera repris dans la configuration des dépôts git et de leurs politiques d'accès. Dans le fichier `gitolite.conf` se trouve la liste des dépôts ainsi que leurs règles d'accès. La syntaxe du fichier `gitolite.conf` ressemble à ceci: ``` {.conf} repo gitolite-admin RW+ = bob repo george RW+ = bob R = alice ``` Pour chaque dépôt on retrouve le mot clé `repo` suivit du nom du dépôt. Les lignes qui suivent indiquent une règle d'accès associé à un nom d'utilisateur. Les règles d'accès peuvent être: - `R`: Accès en lecture (`clone`, `fetch`, ...) - `W`: Accès en écriture (`push`) - `+`: Opérations de correction (`rewinds` ou `deletes`) D'autres règles d'accès peuvent être trouvées sur le [manuel officiel](http://gitolite.com/gitolite/conf/). Il est possible de créer des groupes d'utilisateurs ou de dépôts avec la syntaxe: ``` {.conf} @staff = bob alice ``` Vous pouvez ensuite utiliser ce groupe dans votre configuration en invoquant son nom (par exemple `@staff`). Mais évitez de prononcer ce nom trois fois. N'oubliez pas de "commiter" vos changements et de les pousser pour qu'ils soient pris en compte par Gitolite. Utilisation =========== Chaque utilisateur ayant accès à votre serveur Gitolite peut savoir à quels dépôts il a accès et ce qu'il a le droit d'y faire. Pour cela, il lui suffit d'exécuter depuis son terminal: ``` {.bash} ssh git@ info ``` Voici un exemple de ce qu'il peut recevoir en réponse: ``` {.bash} hello bob, this is git@my_server running gitolite3 on git 2.9.4 R W gitolite-admin R W george ``` Ensuite, il suffit au développeur de cloner le dépôt dont il a besoin, de "commiter" puis de pousser ses changements. L'URL d'un dépôt ressemble à ceci: `git@mon_server:mon_dépôt` Essayons, par exemple, de cloner `george`: ``` {.bash} git clone git@mon_serveur:george ``` Voilà, reste plus qu'à se mettre au boulot. Aller plus loin =============== Quelques liens utiles: - [Site web et documentation officiel de Gitolite](http://gitolite.com/gitolite/) - [Un article sur comment intégrer Gitolite avec LDAP](https://spredzy.wordpress.com/2013/01/05/gitolite-openldap/)

AltStyle によって変換されたページ (->オリジナル) /