relecture

This commit is contained in:
gcolpart 2017-04-14 15:18:21 +02:00
parent 0405a2f7cf
commit 5f91091cc2

View file

@ -3,43 +3,46 @@ categories: git
title: Howto Gerrit title: Howto Gerrit
... ...
* Versions / Documentation : <https://www.gerritcodereview.com/releases/README.md> * Documentation : <https://gerrit-documentation.storage.googleapis.com/Documentation/2.13.7/index.html>
[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 # Installation
Les pré-requis sont d'avoir une JRE en version 7 minimum et un serveur SQL. 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 ## Création de l'utilisateur Unix et MySQL
``` ~~~
# adduser --disabled-password gerrit # adduser --disabled-password gerrit
# mysql # mysql
``` ~~~
```sql ~~~{.sql}
mysql> CREATE USER 'gerrit'@'localhost' IDENTIFIED BY 'PASSWORD'; mysql> CREATE USER 'gerrit'@'localhost' IDENTIFIED BY 'PASSWORD';
mysql> CREATE DATABASE gerrit; mysql> CREATE DATABASE gerrit;
mysql> GRANT ALL ON gerrit.* TO 'gerrit'@'localhost'; mysql> GRANT ALL ON gerrit.* TO 'gerrit'@'localhost';
``` ~~~
## Téléchargement du .war ## Téléchargement du .war
``` ~~~
# sudo -iu gerrit # sudo -iu gerrit
$ wget https://www.gerritcodereview.com/download/gerrit-2.13.7.war -O gerrit.war $ wget https://www.gerritcodereview.com/download/gerrit-2.13.7.war -O gerrit.war
``` ~~~
## Initialiser la configuration ## Initialiser la configuration
``` ~~~
$ java -jar gerrit.war init -d /home/gerrit $ 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`. 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`. > **Note** : L'utilisateur `gerrit` doit pouvoir accéder aux dépôts GIT dans `/home/git`.
``` ~~~
$ java -jar bin/gerrit.war reindex $ java -jar bin/gerrit.war reindex
``` ~~~
Puis lancer le démon. Puis lancer le démon :
```
~~~
$ bin/gerrit.sh start $ bin/gerrit.sh start
``` ~~~
Accéder au serveur web de Gerrit via `http://localhost:8081` par exemple, et créer le premier administrateur. 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 ### Script d'init
Il faut copier le script `gerrit.sh` qui est compatible « 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 # install -m 700 -o root -g root /home/gerrit/bin/gerrit.sh /etc/init.d/gerrit
``` ~~~
Puis créer `/etc/default/gerritcodereview`. Puis créer `/etc/default/gerritcodereview`.
``` ~~~
# echo "GERRIT_SITE=/home/gerrit" >> /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}`. 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 ## Reverse Proxy
Pour utiliser Apache devant Gerrit. Pour utiliser [Apache](HowtoApache) devant Gerrit : <https://gerrit-documentation.storage.googleapis.com/Documentation/2.13.7/config-reverseproxy.html>
Doc : <https://gerrit-documentation.storage.googleapis.com/Documentation/2.13.7/config-reverseproxy.html> Exemple de VirtualHost :
Exemple de vhost : ~~~{.apache}
```apache
<VirtualHost *:80> <VirtualHost *:80>
ServerName review.example.com ServerName review.example.com
@ -251,10 +254,9 @@ Exemple de vhost :
ProxyPreserveHost On ProxyPreserveHost On
<Proxy *> <Proxy *>
Order deny,allow #Order deny,allow
Allow from all #Allow from all
# Use following line instead of the previous two on Apache >= 2.4 Require all granted
# Require all granted
</Proxy> </Proxy>
AllowEncodedSlashes On AllowEncodedSlashes On
@ -262,53 +264,52 @@ Exemple de vhost :
</VirtualHost> </VirtualHost>
``` ```
> **Note** : Assurez-vous d'avoir activé le module apache `proxy_http`. > **Note** : Assurez-vous d'avoir activé le module apache `proxy_http`.
Il faudra s'assurer d'avoir dans la configuration de Gerrit : Il faudra s'assurer d'avoir dans la configuration de Gerrit :
``` ~~~
[httpd] [httpd]
listenUrl = proxy-http://127.0.0.1:8081/ listenUrl = proxy-http://127.0.0.1:8081/
``` ~~~
## Authentification LDAP via Apache ## 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]
<Location "/login/"> <Location "/login/">
AuthType Basic AuthType Basic
AuthName "Gerrit Code Review" AuthName "Gerrit Code Review"
Require valid-user Require valid-user
AuthBasicProvider ldap AuthBasicProvider ldap
AuthzLDAPAuthoritative on 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=*)"
</Location> </Location>
``` ~~~
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` 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 # 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 /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_ssh -p 29418 localhost
``` ~~~
# Créer un utilisateur Gerrit via SSH # Créer un utilisateur Gerrit via SSH
Avec un compte administrateur, vous devez d'abord uploader votre clé publique dans l'interface web. 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 # 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 : 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 [HTTP-56] WARN com.google.gerrit.server.query.account.InternalAccountQuery : Ambiguous external ID gerrit:foo 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" [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:evolix" to account 9; external ID already in use. 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) 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 : C'est peut-être un problème de cache. Essayez de le reconstruire avec :
``` ~~~
$ bin/gerrit.sh stop $ bin/gerrit.sh stop
$ java -jar bin/gerrit.war reindex --index accounts $ java -jar bin/gerrit.war reindex --index accounts
$ bin/gerrit.sh start $ bin/gerrit.sh start
``` ~~~