22
0
Fork 0

relecture

This commit is contained in:
gcolpart 2017-04-14 15:18:21 +02:00
parent 0405a2f7cf
commit 5f91091cc2
1 changed files with 58 additions and 57 deletions

View File

@ -3,43 +3,46 @@ categories: git
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
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 : <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>
ServerName review.example.com
@ -251,10 +254,9 @@ Exemple de vhost :
ProxyPreserveHost On
<Proxy *>
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
</Proxy>
AllowEncodedSlashes On
@ -262,53 +264,52 @@ Exemple de vhost :
</VirtualHost>
```
> **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]
<Location "/login/">
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=*)"
</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`
# 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
```
~~~