Comment installer Gerrit sous Tomcat avec LDAP?

11

J'essaie de trouver de bonnes instructions pour installer Gerrit sous Tomcat avec le support LDAP. J'ai besoin de cela installé sur un serveur Windows 2008, de préférence. Cependant, je peux opter pour Linux si ce n'est pas possible.

Les instructions Gerrit couvrent uniquement l'installation sous la jetée:

http://gerrit.googlecode.com/svn/documentation/2.1.3/install-j2ee.html#installation

Il n'y a pas grand-chose à travailler si je souhaite configurer cela dans des environnements différents.

J'ai trouvé quelques liens utiles, mais rien ne réunissant la configuration.

http://codeslife.com/2011/06/08/install-gerrit-locally-under-windows/ http://gerrit.googlecode.com/svn/documentation/2.1.7/config-gerrit.html#_a_id_ldap_a_section_ldap http : //code.google.com/p/gerrit/issues/detail? id = 292

Je peux toujours configurer cela par essais et erreurs, mais je préférerais gagner du temps si quelqu'un a déjà résolu les problèmes.

Jason Huntley
la source

Réponses:

21

J'ai décidé d'aller de l'avant et de répondre à cette question car elle est en quelque sorte nécessaire pour la communauté Gerrit. Actuellement, il n'y a pas beaucoup de tutoriels couvrant les configurations avancées de Gerrit. J'espère que cela aidera les autres à explorer les pratiques XP / Agile et à faire fonctionner Gerrit. C'est un excellent outil une fois que vous avez passé tous les défis et détails de configuration subtils.

Ce tutoriel d'installation est plutôt unique en ce sens qu'il dessert l'environnement spécifique:

  • Windows 2008 Server
  • PostgreSql
  • Matou
  • LDAP via Active Directory
  • Gerrit
  • msysgit

Avant de commencer, assurez-vous que git est installé sur votre système. Téléchargez le dernier outil de ligne de commande msysgit pour Windows à partir de http://code.google.com/p/msysgit/downloads/list

Assurez-vous que vous obtenez le "programme d'installation complet pour Git officiel pour Windows".

  • Installer MSysGit
  • Utiliser les valeurs par défaut lorsque vous y êtes invité
  • Configurer Git

Si vous avez l'intention d'utiliser la version GitWeb dans msysgit, vous remarquerez des problèmes autour de CGI.pm. Je voudrais mentionner un correctif pour résoudre ce problème.

Le Perl inclus avec la distribution msysgit, à partir de 1.7.8, est cassé, http://groups.google.com/group/msysgit/browse_thread/thread/ba3501f1f0ed95af . Le dossier unicore est manquant avec utf8_heavy.pl et CGI.pm. Vous pouvez vérifier en recherchant les modules perl:

perl -mCGI -mEncode -mFcntl -mFile :: Find -mFile :: Basename -e "" Vous rencontrerez probablement l'exception suivante:

$ perl -mCGI -mEncode -mFcntl -mFile :: Find -mFile :: Basename -e "" Impossible de localiser CGI.pm dans @INC (@INC contient: /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.). Échec de BEGIN - compilation interrompue.

Si vous manque CGI.pm, vous devrez déployer le module dans l'environnement msys: vous devrez les récupérer à partir de la distribution 5.8.8 sur:

http://strawberryperl.com/releases.html

Fichier: strawberry-perl-5.8.8.3.zip

contenu: bin / lib / site /

copiez le contenu de lib dans msysgit / lib / perl5 / 5.8.8 et écrasez les fichiers existants.

Si vous utilisez git en ligne de commande, ajoutez vos paramètres de configuration globale à git:

git config --global user.name "Your Name"
git config --global user.email [email protected]
git config --global core.autocrlf false

Assurez-vous que les informations d'identification utilisées ici correspondent aux informations d'identification dans gerrit. Sinon, gerrit rejettera votre demande.

Les instructions d'installation et de configuration de Gerrit sont les suivantes:

  • Tout d'abord, connectez-vous au serveur hébergeant postgres et créez un utilisateur et une base de données pour Gerrit
  • createuser --username = postgres -A -D -P -E gerrit2
  • createdb --username = postgres -E UTF-8 -O gerrit2 reviewdb
  • Maintenant, revenez à l'hôte, s'il est différent, pour Gerrit et créez 3 répertoires pour déployer Gerrit
  • Créez un répertoire d'installation de base pour gerrit, de préférence un répertoire versionné pour le contenu du déploiement de guerre
  • Créer un sous-répertoire pour tomcat
  • Créer un répertoire de configuration pour déployer le schéma et la configuration
  • Le contenu devrait ressembler à ceci:
  • gerrit
    • matou
    • config
    • gerrit-XX
  • Téléchargez tomcat depuis http://tomcat.apache.org/download-60.cgi
  • Remarque: La plupart des distributions Linux auront cela à disposition de leurs gestionnaires de mise à jour. Exemple: utilisez Synaptic sur Ubuntu
  • Déployez votre installation tomcat dans le répertoire tomcat
  • Téléchargez la dernière version de gerrit.war depuis http://code.google.com/p/gerrit/downloads/list .
  • copier le fichier dans le répertoire gerrit de base
  • extraire le fichier war dans le sous-répertoire gerrit-XX
  • CD dans le répertoire de base gerrit et exécutez java -jar gerrit-2.4-rc0.war init -d config
    • Cette configuration inclut des extras pour LDAP et fonctionnant derrière un proxy, ne configurez pas ces options si elles ne sont pas nécessaires.

Exécuter:

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]: [email protected]
[email protected]'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.
  • Ne vous inquiétez pas de configurer Gerrit en tant que serveurs, nous le configurerons plus tard
  • Editez config \ etc \ gerrit.config
  • sous la section gerrit, ajoutez un paramètre pour conicalWebUrl = http://review.corporation.com/
  • Si vos projets ne respectent pas le format traditionnel project.git, ajoutez la section suivante:
  • ajoutez le fichier locaiton et l'url à votre serveur gitweb avec les propriétés associées

Mise à jour 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 vous utilisez http / https pour servir, ajoutez ce qui suit:

Mise à jour gerrit.config:

[download]
scheme = http
  • Si vous utilisez LDAP avec Active Directory, vous devrez modifier vos paramètres, ajouter des paramètres supplémentaires pour prendre en charge AD:

Mise à jour 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>
  • Vous n'avez pas besoin du connecteur AJP à moins que vous n'ayez l'intention de faire un proxy avec Apache HTTP Server. Je l'utilise pour décharger le cryptage SSL et gérer les certificats. Retirez-le si vous n'en avez pas besoin. Assurez-vous de changer votre port de connecteur HTTP en 80 si vous avez l'intention de l'exécuter de manière autonome.

  • La configuration ci-dessus est destinée à être utilisée avec postgres. Si vous utilisez MySQL, vous devrez remplacer la ressource par ce qui suit pour 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"
/>

À ce stade, vous êtes maintenant prêt à configurer Gerrit en tant que service et à mettre le système de révision en ligne.

  • Tout d'abord, ajustez les paramètres Tomcat pour exécuter Gerrit en tant que service
  • Allez à tomcat / bin et éditez service.bat

Les options jvm sont définies séparément pour le service nt. Vous devez modifier votre fichier service.bat avant d'installer le service nt. Ce fichier réside dans le répertoire tomcat / bin avec les autres scripts startup.bat et shutdown. Faites défiler jusqu'à la section suivante:

"%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

Modifiez cette ligne pour qu'elle corresponde à ce qui suit:

"%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 mémoire initiale, jvmMs, doit certainement être définie sur 512 Mo pour gerrit et étendue, JvmMx, sur 1024 Mo.

Vous êtes maintenant prêt à déployer gerrit en tant que service sous Windows. Exécutez simplement ce qui suit:

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>

Allez à votre gestionnaire de serveur et ouvrez le nœud Services. Ouvrez les propriétés de Gerrit et assurez-vous de définir le type de démarrage sur Automatique:

Prestations de service

Boîte de dialogue Appliquer et fermer.

OK ... Avons-nous fini? Malheureusement non, il ne vous reste que quelques étapes. Accrochez-vous.

Vous êtes maintenant prêt à démarrer le service. Sélectionnez simplement le service Gerrit et cliquez sur l'option Démarrer à gauche.

Consultez les journaux sous le répertoire tomcat / log. Assurez-vous qu'il n'y a pas d'erreurs en suspens. Si vous avez des problèmes, vous pouvez poser des questions ici ou sur la liste de diffusion gerrit: http://groups.google.com/group/repo-discuss

Vous devriez pouvoir accéder à votre navigateur et saisir l'url de votre serveur pour afficher Gerrit maintenant: http://review.corporation.com:8080

Vous serez invité à saisir votre clé publique ssh. Cela n'est nécessaire que si vous avez l'intention d'utiliser Git / Gerrit via ssh au lieu de HTTP. Je suis allé de l'avant et je l'ai installé parce que c'est une bonne option.

Configurer SSH

Générez une clé ssh pour l'accès:

Administrateur @ SERVER ~ / test $ ssh-keygen -t rsa

Enregistrez un nouveau compte dans Gerrit via l'interface Web avec l'adresse e-mail de votre choix. Le premier utilisateur à se connecter et à enregistrer un compte sera automatiquement placé dans le groupe Administrateurs entièrement privilégié, ce qui permettra la gestion du serveur sur le Web et via SSH. Les utilisateurs suivants seront automatiquement enregistrés comme utilisateurs non privilégiés.

Une fois connecté en tant qu'utilisateur, vous trouverez un petit assistant pour vous aider à démarrer. L'assistant vous aide à remplir:

  • Nom réel (nom visible dans Gerrit)
  • Enregistrez votre email (il doit être confirmé plus tard)
  • Sélectionnez un nom d'utilisateur avec lequel communiquer avec Gerrit via ssh + git
  • Le serveur vous demandera une clé publique RSA. C'est la clé que nous avons générée ci-dessus, et il est temps de s'assurer que Gerrit connaît notre nouvelle clé et peut nous identifier par elle.

    utilisateur @ hôte: ~ $ cat .ssh / id_rsa.pub

Configurez l'accès HTTP pour les utilisateurs enregistrés uniquement, sauf si votre projet est ouvert au public:

entrez la description de l'image ici

Générer un mot de passe HTTP

Bien que vous ayez configuré votre propre connexion, vous devez toujours générer un mot de passe pour gerrit au serveur via http / https. Allez à votre configuration -> Configuration du mot de passe HTTP et cliquez sur «Générer le mot de passe». Utilisez ce mot de passe pour toutes les opérations git sur http (s).

Nous pouvons maintenant tester Gerrit via HTTP. Vous devriez être en mesure de cloner tous les projets existants dans le référentiel que vous avez référencé dans la configuration Gerrit.

Test avec opération de clonage

Administrator@SERVER ~/test
$ git clone https://review.corporation.com/sandbox

Testez votre compte 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://[email protected]:29418/REPOSITORY_NAME.g
it

Connection to localhost closed.

Clonez un projet depuis Gerrit via SSH:

Administrator@SERVER~/test
$ git clone ssh://[email protected]: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 vous n'avez pas abandonné maintenant, vous pouvez vous détendre, vous devriez vous retrouver avec un système de révision de code Gerrit fonctionnel hébergé par un serveur Windows 2008 :) Ce n'est pas aussi courant qu'une configuration et comme vous pouvez le voir, cela garantit tout le supplément pas. Cependant, certains d'entre nous ont des ressources limitées et ne peuvent utiliser que ce qui est fourni. J'espère que ce tutoriel aidera ceux qui cherchent à exécuter Gerrit dans un environnement similaire. Vous devriez maintenant être prêt à commencer à utiliser Gerrit! Prendre plaisir!

Pour plus d'informations sur l'utilisation de Gerrit, veuillez consulter le guide d'utilisation du projet Gerrit:

http://gerrit-documentation.googlecode.com/svn/Documentation/2.3/index.html

Merci Shawn Pierce pour l'aide sur IRC!

Pour référence future

Le didacticiel a été converti en documentation pour le projet Gerrit. Pour ceux qui sont intéressés et ont besoin d'une bonne référence. Veuillez consulter la demande de patch ici:

https://gerrit-review.googlesource.com/#/c/37072

Jason Huntley
la source
information très agréable et complète. <p> par défaut "Git pour windows" de msysgit n'inclut pas CGI.pm, comment parvenez-vous à travailler pour gitweb?
larrycai
J'ai résolu cela aussi il y a quelque temps. J'ai des notes sur la façon de résoudre ce problème. Je verrai si je peux fournir une mise à jour ici sous peu.
Jason Huntley
Hé Larry, j'ai mis à jour le tutoriel et inclus le correctif pour le problème GIT.pm. Veuillez voter pour la réponse si vous trouvez ce message utile. Merci!
Jason Huntley
est-ce que le gitweb peut fonctionner comme vous le décrivez comme CGI? J'ai créé gitweb.bat pour l'envelopper sans apache <p> Pour CGI.pm, il suffit de télécharger CGI.tar.gz et de le télécharger dans / usr / lib / perl5 / site_perl est assez bon. <p> le tutoriel est très complet, mais c'est un peu difficile à suivre pour un débutant ;-)
larrycai
@larrycai, oui j'ai écrit ce tutoriel il y a quelque temps et il a en fait été amélioré et a contribué à la documentation du projet de Gerrit. Il est toujours en cours d'examen, mais lorsqu'il sera approuvé, je mettrai à jour cette question. Merci pour les commentaires. Oh et oui, gitweb fonctionnera certainement comme CGI via Apache.
Jason Huntley