relecture
This commit is contained in:
parent
0405a2f7cf
commit
5f91091cc2
115
HowtoGerrit.md
115
HowtoGerrit.md
|
@ -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
|
||||
```
|
||||
~~~
|
Loading…
Reference in New Issue