From 5f91091cc2cf77943ba5a1c75b1d84c848fdd1cb Mon Sep 17 00:00:00 2001 From: gcolpart Date: Fri, 14 Apr 2017 15:18:21 +0200 Subject: [PATCH] relecture --- HowtoGerrit.md | 115 +++++++++++++++++++++++++------------------------ 1 file changed, 58 insertions(+), 57 deletions(-) diff --git a/HowtoGerrit.md b/HowtoGerrit.md index be62da9d..5301dc23 100644 --- a/HowtoGerrit.md +++ b/HowtoGerrit.md @@ -3,43 +3,46 @@ categories: git title: Howto Gerrit ... -* Versions / Documentation : +* Documentation : -[Gerrit](https://www.gerritcodereview.com/) est un logiciel de revue de code source s'appuyant sur GIT. +[Gerrit](https://www.gerritcodereview.com/) est un logiciel de revue de code source s'appuyant sur [GIT](HowtoGit). # Installation Les pré-requis sont d'avoir une JRE en version 7 minimum et un serveur SQL. -Nous conseillons d'utiliser `openjdk-7-jre` ou `openjdk-8-jre` et MySQL. +Nous conseillons d'utiliser _openjdk-7-jre_ (ou _openjdk-8-jre_) et MySQL. +~~~ +# apt install default-jre +~~~ ## Création de l'utilisateur Unix et MySQL -``` +~~~ # adduser --disabled-password gerrit # mysql -``` +~~~ -```sql +~~~{.sql} mysql> CREATE USER 'gerrit'@'localhost' IDENTIFIED BY 'PASSWORD'; mysql> CREATE DATABASE gerrit; mysql> GRANT ALL ON gerrit.* TO 'gerrit'@'localhost'; -``` +~~~ ## Téléchargement du .war -``` +~~~ # sudo -iu gerrit $ wget https://www.gerritcodereview.com/download/gerrit-2.13.7.war -O gerrit.war -``` +~~~ ## Initialiser la configuration -``` +~~~ $ java -jar gerrit.war init -d /home/gerrit -``` +~~~ -Une série de questions vous sera posé pour initialiser la configuration. On pourra répondre `?` pour avoir de l'aide. +Une série de questions vous sera posée pour initialiser la configuration. On pourra répondre `?` pour avoir de l'aide. La configuration est générée dans le fichier `/home/gerrit/etc/gerrit.config`. @@ -200,46 +203,46 @@ Avant tout chose, il faut construire l'index. > **Note** : L'utilisateur `gerrit` doit pouvoir accéder aux dépôts GIT dans `/home/git`. -``` +~~~ $ java -jar bin/gerrit.war reindex -``` +~~~ -Puis lancer le démon. -``` +Puis lancer le démon : + +~~~ $ bin/gerrit.sh start -``` +~~~ Accéder au serveur web de Gerrit via `http://localhost:8081` par exemple, et créer le premier administrateur. -Si vous obtenez l'erreur `Missing project All-Projects`, il faudra peut-être supprimer la base `gerrit` et la recréer, puis relancer `l'init`. +> **Note** : Si vous obtenez l'erreur `Missing project All-Projects`, il faudra peut-être supprimer la base `gerrit` et la recréer, puis relancer `l'init`. ### Script d'init Il faut copier le script `gerrit.sh` qui est compatible « script d'init ». -``` +~~~ # install -m 700 -o root -g root /home/gerrit/bin/gerrit.sh /etc/init.d/gerrit -``` +~~~ Puis créer `/etc/default/gerritcodereview`. -``` +~~~ # echo "GERRIT_SITE=/home/gerrit" >> /etc/default/gerritcodereview -``` +~~~ On pourra ensuite activer le script d'init, et faire les actions `{start|stop|restart|check|status|run|supervise|threads}`. -# Configuration avancé + +# Configuration avancée ## Reverse Proxy -Pour utiliser Apache devant Gerrit. +Pour utiliser [Apache](HowtoApache) devant Gerrit : -Doc : +Exemple de VirtualHost : -Exemple de vhost : - -```apache +~~~{.apache} ServerName review.example.com @@ -251,10 +254,9 @@ Exemple de vhost : ProxyPreserveHost On - Order deny,allow - Allow from all - # Use following line instead of the previous two on Apache >= 2.4 - # Require all granted + #Order deny,allow + #Allow from all + Require all granted AllowEncodedSlashes On @@ -262,53 +264,52 @@ Exemple de vhost : ``` - > **Note** : Assurez-vous d'avoir activé le module apache `proxy_http`. Il faudra s'assurer d'avoir dans la configuration de Gerrit : -``` +~~~ [httpd] - listenUrl = proxy-http://127.0.0.1:8081/ -``` + listenUrl = proxy-http://127.0.0.1:8081/ +~~~ ## Authentification LDAP via Apache -Via Apache, on peut gérer l'authentification via LDAP. (Il est donc nécessaire de mettre en place la section [Reverse Proxy](#reverse-proxy)). +Via Apache, on peut gérer l'authentification via LDAP (Il est donc nécessaire de mettre en place la section [Reverse Proxy](#reverse-proxy)). -Il suffit d'ajouter dans le vhost : +Il suffit d'ajouter dans le VirtualHost : -```apache +~~~{.apache] AuthType Basic AuthName "Gerrit Code Review" Require valid-user AuthBasicProvider ldap AuthzLDAPAuthoritative on - AuthLDAPURL "ldap://127.0.0.1:389/ou=people,dc=foo,dc=bar?uid?sub?(objectClass=*)" + AuthLDAPURL "ldap://127.0.0.1:389/ou=people,dc=example,dc=com?uid?sub?(objectClass=*)" -``` +~~~ Une fois passé cette authentification, Gerrit lui-même rapatrie les informations de l'utilisateur via LDAP (champ sn…) en se connectant avec l'utilisateur renseigné dans sa configuration (ou anonymous) `ldap.username`… # Monitoring -On peut surveiller avec Nagios la bonne réponse de l'interface web, et la disponibilité du serveur SSH embarqué. Par exemple avec NRPE. +On peut surveiller avec Nagios la bonne réponse de l'interface web et la disponibilité du serveur SSH embarqué : -``` -command[check_gerrit_http]=/usr/lib/nagios/plugins/check_http -H localhost -p 8081 -command[check_gerrit_ssh]=/usr/lib/nagios/plugins/check_ssh -p 29418 localhost -``` +~~~ +/usr/lib/nagios/plugins/check_http -H localhost -p 8081 +/usr/lib/nagios/plugins/check_ssh -p 29418 localhost +~~~ # Créer un utilisateur Gerrit via SSH Avec un compte administrateur, vous devez d'abord uploader votre clé publique dans l'interface web. -Dans cet exemple, on crée le compte jenkins, on pousse sa clé publique et on le met dans le groupe « Non-Interactive Users ». +Dans cet exemple, on crée le compte _jenkins_, on pousse sa clé publique et on le met dans le groupe « Non-Interactive Users ». -``` -cat /home/gerrit/.ssh/jenkins.pub | ssh -p 29418 admin@localhost gerrit create-account --group "'Non-Interactive Users'" --ssh-key - jenkins -``` +~~~ +$ cat /home/gerrit/.ssh/jenkins.pub | ssh -p 29418 admin@localhost gerrit create-account --group "'Non-Interactive Users'" --ssh-key - jenkins +~~~ # FAQ @@ -316,18 +317,18 @@ cat /home/gerrit/.ssh/jenkins.pub | ssh -p 29418 admin@localhost gerrit create-a Si vous obtenez l'erreur suivante : -``` -[2017-04-03 10:29:35,978] [HTTP-56] WARN com.google.gerrit.server.query.account.InternalAccountQuery : Ambiguous external ID gerrit:evolix for accounts: 3, 1 -[2017-04-03 10:29:36,048] [HTTP-56] ERROR com.google.gerrit.httpd.auth.container.HttpLoginServlet : Unable to authenticate user "evolix" -com.google.gerrit.server.account.AccountException: Cannot assign external ID "gerrit:evolix" to account 9; external ID already in use. +~~~ +[HTTP-56] WARN com.google.gerrit.server.query.account.InternalAccountQuery : Ambiguous external ID gerrit:foo for accounts: 3, 1 +[HTTP-56] ERROR com.google.gerrit.httpd.auth.container.HttpLoginServlet : Unable to authenticate user "foo" +com.google.gerrit.server.account.AccountException: Cannot assign external ID "gerrit:foo" to account 9; external ID already in use. at com.google.gerrit.server.account.AccountManager.create(AccountManager.java:268) […] -``` +~~~ C'est peut-être un problème de cache. Essayez de le reconstruire avec : -``` +~~~ $ bin/gerrit.sh stop $ java -jar bin/gerrit.war reindex --index accounts $ bin/gerrit.sh start -``` \ No newline at end of file +~~~ \ No newline at end of file