Decidí seguir adelante con una respuesta, ya que es algo necesario para la comunidad de Gerrit. Actualmente, no hay muchos tutoriales que cubran configuraciones avanzadas para Gerrit. Espero que esto ayude a otros a explorar las prácticas de XP / Agile y poner a Gerrit en funcionamiento. Es una gran herramienta una vez que superas todos los desafíos y detalles de configuración sutiles.
Este tutorial de instalación es bastante único, ya que sirve el entorno específico:
- Windows 2008 Server
- PostgreSql
- Gato
- LDAP a través de Active Directory
- Gerrit
- msysgit
Antes de comenzar, asegúrese de tener instalado git en su sistema. Descargue la última herramienta de línea de comandos de msysgit para Windows desde http://code.google.com/p/msysgit/downloads/list
Asegúrese de obtener el "Instalador completo para Git oficial para Windows".
- Instalar MSysGit
- Utilice los valores predeterminados cuando se le solicite
- Configurar Git
Si tiene la intención de utilizar la versión de GitWeb en msysgit, notará algunos problemas relacionados con CGI.pm. Me gustaría mencionar una solución para resolver este problema.
El perl incluido con la distribución msysgit, a partir de 1.7.8, está roto, http://groups.google.com/group/msysgit/browse_thread/thread/ba3501f1f0ed95af . Falta la carpeta unicore junto con utf8_heavy.pl y CGI.pm. Puedes verificarlo buscando módulos perl:
perl -mCGI -mEncode -mFcntl -mFile :: Find -mFile :: Basename -e "" Probablemente encontrará la siguiente excepción:
$ perl -mCGI -mEncode -mFcntl -mFile :: Find -mFile :: Basename -e "" No se puede encontrar CGI.pm en @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.). BEGIN falló - la compilación fue abortada.
Si falta CGI.pm, deberá implementar el módulo en el entorno msys: deberá recuperarlos de la distribución 5.8.8 en:
http://strawberryperl.com/releases.html
Archivo: strawberry-perl-5.8.8.3.zip
contenido: bin / lib / site /
copie el contenido de lib en msysgit / lib / perl5 / 5.8.8 y sobrescriba los archivos existentes.
Si usa la línea de comandos git, agregue su configuración global a git:
git config --global user.name "Your Name"
git config --global user.email you@corporation.com
git config --global core.autocrlf false
Asegúrese de que las credenciales utilizadas aquí coincidan con las credenciales en gerrit. De lo contrario, gerrit rechazará su solicitud.
Las instrucciones para instalar y configurar Gerrit son las siguientes:
- Primero, inicie sesión en el servidor que aloja postgres y cree un usuario y una base de datos para Gerrit
- createuser --username = postgres -A -D -P -E gerrit2
- createdb --username = postgres -E UTF-8 -O gerrit2 reviewdb
- Ahora, vuelva al host, si es diferente, para Gerrit y cree 3 directorios para implementar Gerrit
- Cree un directorio de instalación base para gerrit, preferiblemente un directorio versionado para los contenidos de despliegue de guerra
- Crear un subdirectorio para tomcat
- Cree un directorio de configuración para implementar el esquema y la configuración
- El contenido debería verse así:
- gerrit
- Descargue tomcat de http://tomcat.apache.org/download-60.cgi
- Nota: La mayoría de las distribuciones de Linux lo tendrán disponible de sus administradores de actualizaciones. Ejemplo: usar Synaptic en Ubuntu
- Implemente su instalación de tomcat en el directorio de tomcat
- Descargue la última versión de gerrit.war de
http://code.google.com/p/gerrit/downloads/list .
- copiar el archivo al directorio base de gerrit
- extraer el archivo war al subdirectorio gerrit-XX
- CD al directorio base de gerrit y ejecutar
java -jar gerrit-2.4-rc0.war
init -d config
- Esta configuración incluye extras para LDAP y se ejecuta detrás de un proxy, no configure estas opciones si no es necesario.
Ejecutar:
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.
- No se preocupe por configurar Gerrit como servidores, lo configuraremos más tarde
- Editar config \ etc \ gerrit.config
- En la sección Gerrit, agregue una configuración para conicalWebUrl =
http://review.corporation.com/
- Si sus proyectos no siguen el formato tradicional project.git, agregue la siguiente sección:
- agregue la ubicación del archivo y la url a su servidor gitweb junto con las propiedades asociadas
Actualización de 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}
- Si está utilizando http / https para servir, agregue lo siguiente:
Actualización de gerrit.config:
[download]
scheme = http
- Si está utilizando LDAP con el directorio activo, deberá ajustar su configuración y agregar configuraciones adicionales para admitir AD:
Actualización de 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>
No necesita el conector AJP a menos que tenga la intención de proxy con el servidor Apache HTTP. Lo uso para descargar el cifrado SSL y administrar certificados. Simplemente quítelo si no es necesario. Asegúrese de cambiar el puerto del conector HTTP a 80 si tiene la intención de ejecutarlo de manera independiente.
La configuración anterior es para uso con postgres. Si está utilizando MySQL, deberá reemplazar el recurso con lo siguiente para 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"
/>
En este punto, ahora está listo para configurar Gerrit como un servicio y poner el sistema de revisión en línea.
- Primero, modifique la configuración de Tomcat para ejecutar Gerrit como servicio
- Ir a tomcat / bin y editar service.bat
Las opciones de jvm se configuran por separado para el servicio nt. Debe modificar su archivo service.bat antes de instalar el servicio nt. Este archivo reside en el directorio tomcat / bin con los otros scripts startup.bat y shutdown. Desplácese hacia abajo a la siguiente sección:
"%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
Modifique esta línea para que coincida con lo siguiente:
"%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 inicial, jvmMs, definitivamente debe establecerse en 512Mb para gerrit y extendida, JvmMx, a 1024Mb.
Ahora está listo para implementar gerrit como un servicio en Windows. Simplemente ejecute lo siguiente:
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>
Vaya a su administrador de servidor y abra el nodo Servicios. Abra las propiedades de Gerrit y asegúrese de establecer el tipo de inicio en Automático:
Aplicar y cerrar el diálogo.
OK ... ¿Ya hemos terminado? Lamentablemente no, solo quedan unos pocos pasos más. Cuelga ahí.
Ahora estás listo para comenzar el servicio. Simplemente resalte el servicio Gerrit y haga clic en la opción Inicio a la izquierda.
Revise los registros en el directorio tomcat / log. Asegúrese de que no haya errores pendientes. Si tiene problemas, puede hacer preguntas aquí o en la lista de correo de gerrit:
http://groups.google.com/group/repo-discuss
Debería poder ir a su navegador e ingresar la URL de su servidor para ver Gerrit ahora: http://review.corporation.com:8080
Se le pedirá que ingrese su clave pública ssh. Esto solo es necesario si tiene la intención de usar Git / Gerrit a través de ssh en lugar de HTTP. Seguí adelante y lo configuré porque es una buena opción.
Configurar SSH
Genere una clave ssh para acceder:
Administrador @ SERVER ~ / test $ ssh-keygen -t rsa
Registre una nueva cuenta en Gerrit a través de la interfaz web con la dirección de correo electrónico que elija. El primer usuario que inicie sesión y registre una cuenta se colocará automáticamente en el grupo de Administradores con todos los privilegios, lo que permitirá la administración del servidor a través de la web y SSH. Los usuarios posteriores se registrarán automáticamente como usuarios sin privilegios.
Una vez que haya iniciado sesión como usuario, encontrará un pequeño asistente para comenzar. El asistente te ayuda a completar:
- Nombre real (nombre visible en Gerrit)
- Registre su correo electrónico (debe confirmarse más tarde)
- Seleccione un nombre de usuario con el que comunicarse con Gerrit a través de ssh + git
El servidor le pedirá una clave pública RSA. Esa es la clave que generamos anteriormente, y es hora de asegurarnos de que Gerrit conozca nuestra nueva clave y pueda identificarnos con ella.
usuario @ host: ~ $ cat .ssh / id_rsa.pub
Configure el acceso HTTP solo para usuarios registrados, a menos que su proyecto esté abierto al público:
Generar una contraseña HTTP
A pesar de haber configurado su propio inicio de sesión, aún debe generar una contraseña para gerrit al servidor a través de http / https. Vaya a Configuración -> Configuración de contraseña HTTP y haga clic en 'Generar contraseña'. Use esta contraseña para todas las operaciones de git en http (s).
Ahora podemos probar Gerrit a través de HTTP. Debería poder clonar cualquier proyecto existente en el repositorio al que haya hecho referencia en la configuración de Gerrit.
Prueba con operación de clonación
Administrator@SERVER ~/test
$ git clone https://review.corporation.com/sandbox
Pon a prueba tu cuenta 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.
Clonar un proyecto de Gerrit a través de 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.
Si aún no se ha rendido, puede relajarse, debería encontrarse con un sistema de revisión de código Gerrit en funcionamiento alojado por un servidor de Windows 2008 :) No es tan común como una configuración y, como puede ver, garantiza todo el extra pasos. Sin embargo, algunos de nosotros tenemos recursos limitados y solo podemos usar lo que se proporciona. Espero que este tutorial ayude a aquellos que buscan ejecutar Gerrit en un entorno similar. ¡Ahora debería estar listo para comenzar a usar Gerrit! ¡Disfrutar!
Para obtener más información sobre el uso de Gerrit, consulte la guía del usuario del proyecto Gerrit:
http://gerrit-documentation.googlecode.com/svn/Documentation/2.3/index.html
¡Gracias Shawn Pierce por la ayuda en IRC!
Para futura referencia
El tutorial se ha convertido en documentación para el proyecto Gerrit. Para aquellos interesados y que necesitan una buena referencia. Consulte la solicitud de parche aquí:
https://gerrit-review.googlesource.com/#/c/37072