Ho deciso di andare avanti con una risposta in quanto è necessario per la comunità Gerrit. Attualmente, non ci sono molti tutorial che coprono configurazioni avanzate per Gerrit. Spero che questo possa aiutare gli altri a esplorare le pratiche XP / Agile e far funzionare Gerrit. È un ottimo strumento una volta superate tutte le sottili sfide e dettagli della configurazione.
Questo tutorial di installazione è piuttosto unico in quanto serve l'ambiente specifico:
- Windows 2008 Server
- PostgreSql
- micio
- LDAP tramite Active Directory
- Gerrit
- msysgit
Prima di iniziare, assicurati di aver installato git sul tuo sistema. Scarica l'ultimo strumento da riga di comando msysgit per Windows da http://code.google.com/p/msysgit/downloads/list
Assicurati di ottenere il "programma di installazione completo per Git ufficiale per Windows".
- Installa MSysGit
- Usa i valori predefiniti quando richiesto
- Configura Git
Se hai intenzione di utilizzare la versione GitWeb in msysgit, noterai alcuni problemi con CGI.pm. Vorrei menzionare una correzione per risolvere questo problema.
Il perl incluso nella distribuzione msysgit, a partire dall'1.7.8, è rotto, http://groups.google.com/group/msysgit/browse_thread/thread/ba3501f1f0ed95af . Manca la cartella unicore insieme a utf8_heavy.pl e CGI.pm. Puoi verificare controllando i moduli perl:
perl -mCGI -mEncode -mFcntl -mFile :: Find -mFile :: Basename -e "" Probabilmente riscontrerai la seguente eccezione:
$ perl -mCGI -mEncode -mFcntl -mFile :: Find -mFile :: Basename -e "" Impossibile trovare CGI.pm in @INC (@INC contiene: /usr/lib/perl5/5.8.8/msys / usr / lib / p erl5 / 5.8.8 /usr/lib/perl5/site_perl/5.8.8/msys /usr/lib/perl5/site_perl/5.8.8 / u sr / lib / perl5 / site_perl.). INIZIO fallito - compilazione interrotta.
Se ti manca CGI.pm, dovrai distribuire il modulo nell'ambiente msys: dovrai recuperarli dalla distribuzione 5.8.8 su:
http://strawberryperl.com/releases.html
File: fragola-perl-5.8.8.3.zip
contenuto: bin / lib / site /
copia il contenuto di lib in msysgit / lib / perl5 / 5.8.8 e sovrascrivi i file esistenti.
Se usi git da riga di comando, aggiungi le tue impostazioni di configurazione globale a git:
git config --global user.name "Your Name"
git config --global user.email you@corporation.com
git config --global core.autocrlf false
Assicurati che le credenziali utilizzate qui corrispondano alle credenziali in gerrit. Altrimenti, gerrit rifiuterà la tua richiesta.
Le istruzioni per l'installazione e la configurazione di Gerrit sono le seguenti:
- Per prima cosa, accedi al server che ospita Postgres e crea un utente e un database per Gerrit
- createuser --username = postgres -A -D -P -E gerrit2
- createb --username = postgres -E UTF-8 -O recensione gerrit2db
- Ora, torna all'host, se diverso, per Gerrit e crea 3 directory per distribuire Gerrit
- Creare una directory di installazione di base per gerrit, preferibilmente una directory con versione per i contenuti della distribuzione di guerra
- Creare una sottodirectory per Tomcat
- Creare una directory di configurazione per distribuire lo schema e la configurazione
- I contenuti dovrebbero apparire così:
- Gerrit
- Scarica tomcat da http://tomcat.apache.org/download-60.cgi
- Nota: la maggior parte delle distribuzioni Linux avrà questo a disposizione dai loro gestori degli aggiornamenti. Esempio: utilizzare Synaptic su Ubuntu
- Distribuire l'installazione di Tomcat nella directory Tomcat
- Scarica l'ultima gerrit.war da
http://code.google.com/p/gerrit/downloads/list .
- copia il file nella directory di base di gerrit
- estrarre il file di guerra nella sottodirectory gerrit-XX
- CD nella directory di base di gerrit ed esecuzione
java -jar gerrit-2.4-rc0.war
init -d config
- Questa configurazione include extra per LDAP e l'esecuzione dietro un proxy, non configurare queste opzioni se non necessarie.
Eseguire:
C:\your_path\gerrit>java -jar gerrit-2.4-rc0.war init -d config
*** Gerrit Code Review 2.4-rc0
***
Create 'C:\your_path\gitserver\gerrit\config' [Y/n]? Y
*** Git Repositories
***
Location of Git repositories [git]: C:\your_path\gitserver\repository\ha
*** SQL Database
***
Database server type [H2/?]: postgresql
Server hostname [localhost]: database.corp.local
Server port [(POSTGRESQL default)]:
Database name [reviewdb]:
Database username [Administrator]: gerrit2
gerrit2's password :
confirm password :
*** User Authentication
***
Authentication method [OPENID/?]: LDAP
LDAP server [ldap://localhost]: ldaps://ldap.corp.local:
636
LDAP username : CN=Administrator,CN=Users,DC=corp,DC=local
CN=Administrator,CN=Users,DC=corp,DC=local's password :
confirm password :
Account BaseDN [DC=corp,DC=local:636]: CN=Users,DC=corp,DC=l
ocal
Group BaseDN [CN=Users,DC=corp,DC=local]:
*** Email Delivery
***
SMTP server hostname [localhost]: smtp.corporation.com
SMTP server port [(default)]: 465
SMTP encryption [NONE/?]: SSL
SMTP username [Administrator]: build@corporation.com
build@corporation.com's password :
confirm password :
*** Container Process
***
Run as [Administrator]:
Java runtime [C:\Program Files\Java\jre6]:
Copy gerrit.war to C:\your_path\gitserver\gerrit\config\bin\gerrit.war [Y/n]?
Copying gerrit.war to C:\your_path\gitserver\gerrit\config\bin\gerrit.war
*** SSH Daemon
***
Listen on address [*]:
Listen on port [29418]:
Gerrit Code Review is not shipped with Bouncy Castle Crypto v144
If available, Gerrit can take advantage of features
in the library, but will also function without it.
Download and install it now [Y/n]? n
Generating SSH host key ... rsa(simple)... done
*** HTTP Daemon
***
Behind reverse proxy [y/N]?
Use SSL (https://) [y/N]?
Listen on address [*]:
Listen on port [8080]:
Initialized C:\your_path\gitserver\gerrit\config
Automatic startup not supported on Win32.
- Non preoccuparti di configurare Gerrit come server, lo configureremo in seguito
- Modifica config \ etc \ gerrit.config
- nella sezione gerrit, aggiungi un'impostazione per conicalWebUrl =
http://review.corporation.com/
- Se i tuoi progetti non seguono il tradizionale formato project.git, aggiungi la seguente sezione:
- aggiungi il file locaiton e l'URL al tuo server gitweb insieme alle proprietà associate
Aggiornamento gerrit.config:
[gitweb]
cgi = C:\\path to msysgit\\Git\\share\\gitweb\\gitweb.cgi
url = https://gitweb.corporation.com
type = custom
project = ?p=${project};a=summary
revision = ?p=${project};a=commit;h=${commit}
branch = ?p=${project};a=shortlog;h=${branch}
filehistory = ?p=${project};a=history;hb=${branch};f=${file}
- Se stai utilizzando http / https per pubblicare, aggiungi quanto segue:
Aggiornamento gerrit.config:
[download]
scheme = http
- Se stai usando LDAP con active directory, dovrai modificare le tue impostazioni e aggiungere ulteriori impostazioni per supportare AD:
Aggiornamento gerrit.config:
[ldap]
sslVerify = true
server = ldaps://ldap.corp.local:636
username = CN=Administrator,CN=Users,DC=corp,DC=local
accountBase = CN=Users,DC=corp,DC=local
accountPattern = (&(objectClass=person)(sAMAccountName=${username}))
accountFullName = displayName
accountEmailAddress = mail
accountSshUserName = sAMAccountName
groupBase = CN=Users,DC=corp,DC=local
groupMemberPattern = (sAMAccountName=${username})
groupName = cn
server.xml:
<Server port="8006" shutdown="SHUTDOWN">
<Service name="Catalina">
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="webapps" unpackWARs="true">
<Context path="" docBase="C:\your_path\gitserver\gerrit\gerrit-2.4" debug="0" reloadable="false">
<Resource
name="jdbc/ReviewDb"
type="javax.sql.DataSource"
username="gerrit2"
driverClassName="org.postgresql.Driver"
password="secret"
url="dbc:postgresql://yourPsqlServer:5432/reviewdb"
/>
</Context>
</Host>
</Engine>
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"/>
<Connector port="8011" protocol="AJP/1.3" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
disableUploadTimeout="true" enableLookups="false"
acceptCount="100" URIEncoding="UTF-8" />
</Service>
</Server>
Non è necessario il connettore AJP a meno che non si intenda eseguire il proxy con Apache HTTP Server. Lo uso per scaricare la crittografia SSL e gestire i certificati. Basta rimuoverlo se non necessario. Assicurarsi di cambiare la porta del connettore HTTP su 80 se si intende eseguire autonomamente.
La configurazione sopra è per l'uso con postgres. Se stai usando MySQL, dovrai sostituire la risorsa con quanto segue per MySQL:
server.xml:
<Resource
name="jdbc/ReviewDb"
type="javax.sql.DataSource"
username="gerrit2"
driverClassName="org.gjt.mm.mysql.Driver"
password="secret"
url="jdbc:mysql://yourMsqlServer/reviewdb?autoReconnect=true"
/>
A questo punto, ora sei pronto per configurare Gerrit come servizio e portare il sistema di revisione online.
- Innanzitutto, modifica le impostazioni Tomcat per l'esecuzione di Gerrit come servizio
- Vai a tomcat / bin e modifica service.bat
Le opzioni jvm sono impostate separatamente per il servizio nt. È necessario modificare il file service.bat prima di installare il servizio nt. Questo file risiede nella directory tomcat / bin con gli altri script startup.bat e shutdown. Scorri verso il basso fino alla seguente sezione:
"%EXECUTABLE%" //US//%SERVICE_NAME% \++JvmOptions "-Djava.io.tmpdir=%CATALINA_BASE%\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties" \--JvmMs 128 \--JvmMx 256
Modifica questa riga in modo che corrisponda a quanto segue:
"%EXECUTABLE%" //US//%SERVICE_NAME% \++JvmOptions "-Djava.io.tmpdir=%CATALINA_BASE%\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties" \++JvmOptions="-XX:MaxPermSize=256m" \++JvmOptions="-XX:+CMSClassUnloadingEnabled" \++JvmOptions="-XX:+CMSPermGenSweepingEnabled" \--JvmMs 512 \--JvmMx 1024
La memoria iniziale, jvmMs, dovrebbe sicuramente essere impostata su 512 Mb per gerrit ed estesa, JvmMx, a 1024 Mb.
Ora sei pronto per distribuire gerrit come servizio in Windows. Esegui solo quanto segue:
C:\your_path\gitserver\gerrit\tomcat\bin>service install gerrit
Installing the service 'gerrit' ...
Using CATALINA_HOME: "C:\your_path\gitserver\gerrit\tomcat"
Using CATALINA_BASE: "C:\your_path\gitserver\gerrit\tomcat"
Using JAVA_HOME: "C:\Program Files\Java\jdk1.6.0_31"
Using JVM: "C:\Program Files\Java\jdk1.6.0_31\jre\bin\server\jvm.dl
l"
The service 'gerrit' has been installed.
C:\your_path\gitserver\gerrit\tomcat\bin>
Vai al gestore del server e apri il nodo Servizi. Apri le proprietà di Gerrit e assicurati di impostare il tipo di avvio su Automatico:
Finestra di dialogo Applica e chiudi.
OK ... Abbiamo ancora finito? Sfortunatamente no, bastano pochi altri passaggi. Tenere duro.
Ora sei pronto per iniziare il servizio. Basta evidenziare il servizio Gerrit e fare clic sull'opzione Avvia a sinistra.
Rivedere i registri nella directory tomcat / log. Assicurarsi che non vi siano errori in sospeso. In caso di problemi, è possibile porre domande qui o nella mailing list gerrit:
http://groups.google.com/group/repo-discuss
Dovresti essere in grado di accedere al tuo browser e inserire l'URL del tuo server per visualizzare Gerrit ora: http://review.corporation.com:8080
Ti verrà richiesto di inserire la tua chiave pubblica ssh. Ciò è necessario solo se si intende utilizzare Git / Gerrit tramite ssh anziché HTTP. Sono andato avanti e l'ho impostato perché è una buona opzione da avere.
Configura SSH
Genera una chiave ssh per l'accesso:
Amministratore @ SERVER ~ / test $ ssh-keygen -t rsa
Registra un nuovo account in Gerrit attraverso l'interfaccia web con l'indirizzo email che preferisci. Il primo utente che accede e registra un account verrà automaticamente inserito nel gruppo di amministratori con privilegi completi, consentendo la gestione del server sul Web e su SSH. Gli utenti successivi verranno automaticamente registrati come utenti non privilegiati.
Una volta effettuato l'accesso come utente, troverai una piccola procedura guidata per iniziare. La procedura guidata ti aiuta a compilare:
- Nome reale (nome visibile in Gerrit)
- Registra la tua email (deve essere confermata in seguito)
- Seleziona un nome utente con cui comunicare con Gerrit tramite ssh + git
Il server ti chiederà una chiave pubblica RSA. Questa è la chiave che abbiamo generato sopra, ed è tempo di assicurarsi che Gerrit sia a conoscenza della nostra nuova chiave e possa identificarci con essa.
user @ host: ~ $ cat .ssh / id_rsa.pub
Configurare l'accesso HTTP solo per gli utenti registrati, a meno che il progetto non sia aperto al pubblico:
Genera una password HTTP
Nonostante abbia configurato il tuo login, devi comunque generare una password per gerrit sul server tramite http / https. Vai su Impostazioni-> Configurazione password HTTP e fai clic su "Genera password". Usa questa password per tutte le operazioni git su http (s).
Ora possiamo testare Gerrit tramite HTTP. Dovresti essere in grado di clonare qualsiasi progetto esistente nel repository a cui hai fatto riferimento nella configurazione di Gerrit.
Test con clone
Administrator@SERVER ~/test
$ git clone https://review.corporation.com/sandbox
Prova il tuo account ssh
Administrator@SERVER~/test
$ ssh jhuntley@localhost -p 29418
**** Welcome to Gerrit Code Review ****
Hi Jason Huntley, you have successfully connected over SSH.
Unfortunately, interactive shells are disabled.
To clone a hosted Git repository, use:
git clone ssh://jhuntley@review.corporation.com:29418/REPOSITORY_NAME.g
it
Connection to localhost closed.
Clonare un progetto da Gerrit tramite SSH:
Administrator@SERVER~/test
$ git clone ssh://jhuntley@127.0.0.1:29418/sandbox
Cloning into 'sandbox'...
remote: Counting objects: 183, done
remote: Finding sources: 100% (183/183)
remote: Total 183 (delta 0), reused 0 (delta 0)Receiving objects: 50% (92/183)
Receiving objects: 52% (96/183)
Receiving objects: 100% (183/183), 23.76 KiB, done.
Se ormai non ti sei arreso, puoi rilassarti, dovresti trovarti con un sistema funzionante di revisione del codice Gerrit ospitato da un server Windows 2008 :) Non è così comune come un'installazione e come puoi dire, garantisce tutto il extra passi. Tuttavia, alcuni di noi hanno risorse limitate e possono utilizzare solo ciò che viene fornito. Spero che questo tutorial aiuti chi cerca di eseguire Gerrit in un ambiente simile. Ora dovresti essere pronto per iniziare a usare Gerrit! Godere!
Per ulteriori informazioni sull'utilizzo di Gerrit, consultare la guida per l'utente del progetto Gerrit:
http://gerrit-documentation.googlecode.com/svn/Documentation/2.3/index.html
Grazie Shawn Pierce per l'aiuto su IRC!
Per riferimento futuro
Il tutorial è stato convertito in documentazione per il progetto Gerrit. Per chi è interessato e necessita di un buon riferimento. Si prega di consultare la richiesta di patch qui:
https://gerrit-review.googlesource.com/#/c/37072