Acest tutorial explică instalarea și configurarea aplicației Gerrit Code Review pe Ubuntu 14.04
Ce este Gerrit Code Review?
Gerrit este o aplicație web, pentru revizuirea codului. Dezvoltatorii de software dintr-o echipă pot examina fiecare modificările celorlați asupra codului sursă utilizând un browser web și având posibilitatea de a aproba sau a respinge modificările respective. Gerrit este intergat cu Git, un sistem de control al versiunilor.
Documentația oficială se află aici.
Pachete necesare:
openjdk-7-jre nginx mysql-server gitweb git git-core
*p.s: se poate folosi și Apache, dar eu am preferat Nginx.
Aveți nevoie și de un server SMTP funcțional. Puteți folosi acest tutorial
Creare user pentru Gerrit:
useradd -m -d /home/gerrit -s /bin/bash -U gerrit passwd gerrit Enter new UNIX password: #parola Retype new UNIX password: #parola passwd: password updated successfully
Configurare Nginx:
1. Se creează un nou site :
nano /etc/nginx/sites-available/gerrit
configurație:
server { listen 80; server_name gerrit.exemplu.ro; #url-ul site-ului error_log /home/gerrit/gerrit/logs/gerrit-proxy-error.log; root /home/gerrit/gerrit/; location @gerrit { sendfile off; proxy_pass http://127.0.0.1:8082; proxy_redirect default; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_max_temp_file_size 0; #this is the maximum upload size client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; } location / { try_files $uri @gerrit; } }
2. Activare site:
ln -s /etc/nginx/sites-available/gerrit /etc/nginx/sites-enabled/gerrit
service nginx restart * Restarting nginx nginx [ OK ]
Creare bază de date MySQL:
mysql -p Enter password: #parola_root_mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 50 Server version: 5.5.43-0ubuntu0.14.04.1 (Ubuntu) Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
Inserați aceste comenzi:
CREATE USER 'gerrit'@'localhost' IDENTIFIED BY 'parola_baza_de_date'; CREATE DATABASE reviewdb; GRANT ALL ON reviewdb.* TO 'gerrit'@'localhost'; FLUSH PRIVILEGES; exit;
Inițializare Gerrit:
1.Creare director:
root@vps2:/# su gerrit gerrit@vps2:/$ cd ~ gerrit@vps2:~$ mkdir gerrit gerrit@vps2:~$ cd gerrit/ gerrit@vps2:~/gerrit$
2.Descărcare Gerrit:
wget http://gerrit-releases.storage.googleapis.com/gerrit-2.11.3.war
Compilările mai recente(nightly), le gasiți AICI.
3.Instalare / configurare Gerrit:
java -jar gerrit-2.11.war init -d ~/gerrit Using secure store: com.google.gerrit.server.securestore.DefaultSecureStore *** Gerrit Code Review 2.11 *** *** Git Repositories *** Location of Git repositories [git]: #Apasa Enter *** SQL Database *** Database server type [h2]: mysql Server hostname [localhost]: #Apasa Enter Server port [(mysql default)]: #Apasa Enter Database name [reviewdb]: #Apasa Enter Database username [gerrit]: #Apasa Enter gerrit's password : #Parola baza de date (reviewdb) confirm password : *** Index *** Type [LUCENE/?]: #Apasa Enter The index must be rebuilt before starting Gerrit: java -jar gerrit.war reindex -d site_path *** User Authentication *** Authentication method [OPENID/?]: #Apasa Enter *** Review Labels *** Install Verified label [y/N]? n *** Email Delivery *** SMTP server hostname [localhost]: #Apasa Enter SMTP server port [(default)]: #Apasa Enter SMTP encryption [NONE/?]: #Apasa Enter SMTP username : #Apasa Enter *** Container Process *** Run as [gerrit]: #Apasa Enter Java runtime [/usr/lib/jvm/java-7-openjdk-amd64/jre]: #Apasa Enter Copy gerrit-2.11.war to /home/gerrit/gerrit/bin/gerrit.war [Y/n]? #Apasa Enter Copying gerrit-2.11.war to /home/gerrit/gerrit/bin/gerrit.war *** SSH Daemon *** Listen on address [*]: gerrit.exemplu.ro Listen on port [29418]: #Apasa Enter Gerrit Code Review is not shipped with Bouncy Castle Crypto SSL v151 If available, Gerrit can take advantage of features in the library, but will also function without it. Download and install it now [Y/n]? y Downloading http://www.bouncycastle.org/download/bcpkix-jdk15on-151.jar ... OK Checksum bcpkix-jdk15on-151.jar OK Gerrit Code Review is not shipped with Bouncy Castle Crypto Provider v151 ** This library is required by Bouncy Castle Crypto SSL v151. ** Download and install it now [Y/n]? y Downloading http://www.bouncycastle.org/download/bcprov-jdk15on-151.jar ... OK Checksum bcprov-jdk15on-151.jar OK Generating SSH host key ... rsa... dsa... done *** HTTP Daemon *** Behind reverse proxy [y/N]? y Proxy uses SSL (https://) [y/N]? #Apasa Enter Subdirectory on proxy server [/]: #Apasa Enter Listen on address [*]: 127.0.0.1 Listen on port [8081]: 8082 Canonical URL [http://null/]: http://gerrit.exemplu.ro/ *** Plugins *** Installing plugins. Install plugin download-commands version v2.11 [y/N]? y Install plugin reviewnotes version v2.11 [y/N]? n Install plugin singleusergroup version v2.11 [y/N]? y Install plugin replication version v2.11 [y/N]? y Install plugin commit-message-length-validator version v2.11 [y/N]? n Initializing plugins. No plugins found with init steps. Initialized /home/gerrit/gerrit
4. Descarcăre / instalare plugin GitHub:
wget -O ~/gerrit/plugins/github-plugin-2.11.jar https://ci.gerritforge.com/view/Plugins-stable-2.11/job/Plugin_github_stable-2.11/lastSuccessfulBuild/artifact/github-plugin/target/github-plugin-2.11.jar wget -O ~gerrit/gerrit/lib/github-oauth-2.11.jar https://ci.gerritforge.com/view/Plugins-stable-2.11/job/Plugin_github_stable-2.11/lastSuccessfulBuild/artifact/github-oauth/target/github-oauth-2.11.jar
5. Activare plugin GitHub:
Aplicația Gerrit trebuie inregistrată pe GitHub AICI.
java -jar gerrit-2.11.war init -d ~/gerrit Using secure store: com.google.gerrit.server.securestore.DefaultSecureStore *** Gerrit Code Review 2.11 *** *** Git Repositories *** Location of Git repositories [git]: #Apasa Enter *** SQL Database *** Database server type [mysql]:#Apasa Enter Server hostname [localhost]:#Apasa Enter Server port [(mysql default)]:#Apasa Enter Database name [reviewdb]:#Apasa Enter Database username [gerrit]:#Apasa Enter Change gerrit's password [y/N]?#Apasa Enter *** Index *** Type [LUCENE/?]:#Apasa Enter The index must be rebuilt before starting Gerrit: java -jar gerrit.war reindex -d site_path *** User Authentication *** Authentication method [OPENID/?]: HTTP Get username from custom HTTP header [y/N]? Y Username HTTP header [SM_USER]: GITHUB_USER SSO logout URL : /oauth/reset *** Review Labels *** Install Verified label [y/N]?#Apasa Enter *** Email Delivery *** SMTP server hostname [localhost]:#Apasa Enter SMTP server port [(default)]:#Apasa Enter SMTP encryption [NONE/?]:#Apasa Enter SMTP username :#Apasa Enter *** Container Process *** Run as [gerrit]: Java runtime [/usr/lib/jvm/java-7-openjdk-amd64/jre]:#Apasa Enter Upgrade /home/gerrit/gerrit/bin/gerrit.war [Y/n]?#Apasa Enter Copying gerrit-2.11.war to /home/gerrit/gerrit/bin/gerrit.war *** SSH Daemon *** Listen on address [gerrit.exemplu.ro]: Listen on port [29418]: *** HTTP Daemon *** Behind reverse proxy [Y/n]?#Apasa Enter Proxy uses SSL (https://) [y/N]?#Apasa Enter Subdirectory on proxy server [/]:#Apasa Enter Listen on address : 127.0.0.1 Listen on port [8081]: 8082 Canonical URL [http://gerrit.exemplu.ro]: *** Plugins *** Installing plugins. Install plugin download-commands version v2.11 [y/N]?#Apasa Enter Install plugin reviewnotes version v2.11 [y/N]?#Apasa Enter Install plugin singleusergroup version v2.11 [y/N]?#Apasa Enter Install plugin replication version v2.11 [y/N]?#Apasa Enter Install plugin commit-message-length-validator version v2.11 [y/N]?#Apasa Enter Initializing plugins. *** GitHub Integration *** GitHub URL [https://github.com]:#Apasa Enter GitHub API URL [https://api.github.com]:#Apasa Enter NOTE: You might need to configure a proxy using http.proxy if you run Gerrit behind a firewall. *** GitHub OAuth registration and credentials *** Register Gerrit as GitHub application on: https://github.com/settings/applications/new Settings (assumed Gerrit URL: http://gerrit.exemplu.ro/) * Application name: Gerrit Code Review * Homepage URL: http://gerrit.exemplu.ro/ * Authorization callback URL: http://gerrit.exemplu.ro/oauth After registration is complete, enter the generated OAuth credentials: GitHub Client ID : #Vezi Github GitHub Client Secret : #Vezi Github confirm password : Gerrit OAuth implementation [HTTP/?]:#Apasa Enter HTTP Authentication Header [GITHUB_USER]:#Apasa Enter Initialized /home/gerrit/gerrit
6. Activare git garbage collection:
Se adauga în fișierul ~/gerrit/etc/gerrit.config :
[gc] startTime = Fri 12:00 interval = 4 day
7. Reindexare Gerrit:
java -jar gerrit-2.11.war reindex -d ~/gerrit [2015-05-09 16:19:42,217] INFO com.google.gerrit.server.git.LocalDiskRepositoryManager : Defaulting core.streamFileThreshold to 124m [2015-05-09 16:19:43,104] INFO com.google.gerrit.server.cache.h2.H2CacheFactory : Enabling disk cache /home/gerrit/gerrit/cache Reindexing changes: done Reindexed 0 changes in 0.0s (0.0/s) [2015-05-09 16:19:45,626] INFO com.google.gerrit.server.cache.h2.H2CacheFactory : Finishing 4 disk cache updates
8. Pornire Gerrit:
~/gerrit/bin/gerrit.sh start
9.Replication (încarcăre pe GitHub):
Proiectele se creaza în Gerrit sub formatul: nume_cont_github/repository
Se crează un fișier nou ~/gerrit/etc/replication.config cu urmatorul conținut:
[remote "github"] url = git@github.com:${name}.git push = +refs/heads/*:refs/heads/* push = +refs/tags/*:refs/tags/* push = +refs/*:refs/* timeout = 30 threads = 2 createMissingRepositories = false replicationDelay = 1
10. Repornire Gerrit:
~/gerrit/bin/gerrit.sh restart
Dacă totul a mers conform tutorialului, ar trebui ca Gerrit să funcționeze corespunzător.
Felicitări ! ! !
Tutorialul este inspirat de AICI