Como instalo o Gerrit no Tomcat com LDAP?


11

Estou tentando encontrar boas instruções para instalar o Gerrit no Tomcat com suporte a LDAP. Eu preciso disso instalado em um Windows 2008 Server, de preferência. No entanto, posso optar pelo Linux, se não for possível.

As instruções da Gerrit abrangem apenas a instalação no cais:

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

Não há muito o que resolver se eu quiser configurar isso em ambientes diferentes.

Encontrei alguns links úteis, mas nada reunindo a instalação.

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

Sempre posso configurar esta tentativa e erro, mas eu preferiria economizar tempo se alguém já tivesse resolvido os problemas.

Respostas:


21

Eu decidi ir em frente e responder isso, pois é meio que necessário para a Comunidade Gerrit. Atualmente, não há muitos tutoriais que cobrem configurações avançadas do Gerrit. Espero que isso ajude outras pessoas a explorar práticas XP / Agile e colocar o Gerrit em funcionamento. É uma ótima ferramenta depois de superar todos os sutis desafios e detalhes da configuração.

Este tutorial de instalação é bastante exclusivo, pois atende ao ambiente específico:

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

Antes de começar, verifique se o git está instalado no seu sistema. Faça o download da ferramenta de linha de comando mais recente msysgit para Windows em http://code.google.com/p/msysgit/downloads/list

Certifique-se de obter o "Instalador completo do Git oficial para Windows".

  • Instale o MSysGit
  • Usar padrões quando solicitado
  • Configurar o Git

Se você pretende usar a versão GitWeb no msysgit, notará alguns problemas em torno do CGI.pm. Gostaria de mencionar uma correção para resolver esse problema.

O perl incluído na distribuição msysgit, a partir da 1.7.8, está quebrado, http://groups.google.com/group/msysgit/browse_thread/thread/ba3501f1f0ed95af . A pasta unicore está ausente, juntamente com utf8_heavy.pl e CGI.pm. Você pode verificar verificando se há módulos perl:

perl -mCGI -mEncode -mFcntl -mFile :: Find -mFile :: Basename -e "" Você provavelmente encontrará a seguinte exceção:

$ perl -mCGI -mEncode -mFcntl -mFile :: Find -mFile :: Basename -e "" Não é possível localizar o CGI.pm no @INC (o @INC contém: /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.). Falha no início - compilação anulada.

Se estiver faltando o CGI.pm, será necessário implantar o módulo no ambiente msys: você precisará recuperá-los da distribuição 5.8.8 em:

http://strawberryperl.com/releases.html

Arquivo: strawberry-perl-5.8.8.3.zip

conteúdo: bin / lib / site /

copie o conteúdo da lib para msysgit / lib / perl5 / 5.8.8 e substitua os arquivos existentes.

Se você estiver usando a linha de comando git, adicione suas configurações globais ao git:

git config --global user.name "Your Name"
git config --global user.email you@corporation.com
git config --global core.autocrlf false

Verifique se as credenciais usadas aqui correspondem às credenciais no gerrit. Caso contrário, o gerrit rejeitará sua solicitação.

As instruções para instalar e configurar o Gerrit são as seguintes:

  • Primeiro, efetue login no servidor que hospeda o postgres e crie um usuário e banco de dados para o Gerrit
  • createuser --username = postgres -A -D -P -E gerrit2
  • createdb --username = postgres -E UTF-8 -O gerrit2 revisãodb
  • Agora, volte para o host, se diferente, para o Gerrit e crie 3 diretórios para implantar o Gerrit
  • Crie um diretório de instalação base para o gerrit, preferencialmente um diretório com versão para o conteúdo de implementação do war
  • Crie um subdiretório para o tomcat
  • Crie um diretório de configuração para implementar o esquema e a configuração
  • O conteúdo deve ficar assim:
  • gerrit
    • tomcat
    • config
    • gerrit-XX
  • Faça o download do tomcat em http://tomcat.apache.org/download-60.cgi
  • Nota: A maioria das distribuições Linux terá isso disponível em seus gerenciadores de atualização. Exemplo: Use Synaptic no Ubuntu
  • Implemente sua instalação do tomcat no diretório tomcat
  • Faça o download do último gerrit.war em http://code.google.com/p/gerrit/downloads/list .
  • copiar arquivo para o diretório gerrit base
  • extrair o arquivo war para o subdiretório gerrit-XX
  • CD para o diretório base do gerrit e execute java -jar gerrit-2.4-rc0.war init -d config
    • Essa configuração inclui extras para LDAP e é executada atrás de um proxy; não configure essas opções se não for necessário.

Executar:

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.
  • Não se preocupe em configurar o Gerrit como servidor, nós o configuraremos mais tarde
  • Edite config \ etc \ gerrit.config
  • na seção gerrit, adicione uma configuração para conicalWebUrl = http://review.corporation.com/
  • Se seus projetos não seguirem o formato tradicional project.git, adicione a seguinte seção:
  • adicione o local e o URL do arquivo ao servidor gitweb, juntamente com as propriedades associadas

Atualização 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 você estiver usando http / https para veicular, adicione o seguinte:

Atualização gerrit.config:

[download]
scheme = http
  • Se você estiver usando LDAP com diretório ativo, precisará ajustar suas configurações e adicionar configurações adicionais para dar suporte ao AD:

Atualização 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>
  • Você não precisa do conector AJP, a menos que pretenda fazer proxy com o Apache HTTP Server. Eu o uso para descarregar a criptografia SSL e gerenciar certificados. Apenas remova-o se não for necessário. Certifique-se de alterar a porta do conector HTTP para 80 se você deseja executar independente.

  • A configuração acima é para uso com o postgres. Se você estiver usando o MySQL, precisará substituir o recurso pelo seguinte para o 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"
/>

Neste ponto, você está pronto para configurar o Gerrit como um serviço e colocar o sistema de revisão online.

  • Primeiro, ajuste as configurações do Tomcat para executar o Gerrit como serviço
  • Vá para o tomcat / bin e edite service.bat

As opções jvm são definidas separadamente para o serviço nt. Você deve modificar seu arquivo service.bat antes de instalar o serviço nt. Esse arquivo reside no diretório tomcat / bin com os outros scripts startup.bat e shutdown. Role para baixo até a seguinte seção:

"%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 linha para corresponder ao seguinte:

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

A memória inicial, jvmMs, deve definitivamente ser configurada para 512Mb para gerrit e estendida, JvmMx, para 1024Mb.

Agora você está pronto para implantar o gerrit como um serviço no Windows. Basta executar o seguinte:

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>

Vá para o gerente do servidor e abra o nó Serviços. Abra as propriedades do Gerrit e certifique-se de definir o tipo de inicialização como Automático:

Serviços

Aplicar e fechar caixa de diálogo.

OK ... Já terminamos? Infelizmente não, apenas mais alguns passos a seguir. Mantenha-se firme.

Agora você está pronto para iniciar o serviço. Apenas destaque o serviço Gerrit e clique na opção Iniciar à esquerda.

Revise os logs no diretório tomcat / log. Verifique se não há erros pendentes. Se você tiver problemas, pode fazer perguntas aqui ou na lista de discussão gerrit: http://groups.google.com/group/repo-discuss

Você deve poder ir ao seu navegador e inserir o URL do seu servidor para visualizar a Gerrit agora: http://review.corporation.com:8080

Você será solicitado a inserir sua chave pública ssh. Isso é necessário apenas se você pretende usar o Git / Gerrit via ssh em vez de HTTP. Fui em frente e configurei porque é uma boa opção.

Configurar SSH

Gere uma chave ssh para acesso:

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

Registre uma nova conta no Gerrit através da interface da web com o endereço de e-mail de sua escolha. O primeiro usuário a entrar e registrar uma conta será automaticamente colocado no grupo de Administradores com total privilégio, permitindo o gerenciamento do servidor pela Web e pelo SSH. Usuários subseqüentes serão registrados automaticamente como usuários não privilegiados.

Depois de fazer login como usuário, você encontra um pequeno assistente para começar. O assistente ajuda você a preencher:

  • Nome real (nome visível em Gerrit)
  • Registre seu email (ele deve ser confirmado mais tarde)
  • Selecione um nome de usuário com o qual se comunicar com o Gerrit pelo ssh + git
  • O servidor solicitará uma chave pública RSA. Essa é a chave que geramos acima, e é hora de garantir que a Gerrit conheça nossa nova chave e possa nos identificar por ela.

    user @ host: ~ $ cat .ssh / id_rsa.pub

Configure o acesso HTTP apenas para usuários registrados, a menos que seu projeto seja aberto ao público:

insira a descrição da imagem aqui

Gere uma senha HTTP

Apesar de ter configurado seu próprio login, você ainda precisa gerar uma senha para o gerrit no servidor via http / https. Vá para Configurações-> Configuração da senha HTTP e clique em 'Gerar senha'. Use esta senha para todas as operações git sobre http (s).

Agora podemos testar o Gerrit via HTTP. Você deve ser capaz de clonar qualquer projeto existente no repositório que você referenciou na configuração do Gerrit.

Teste com operação de clone

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

Teste sua conta 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.

Clone um projeto da Gerrit via 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 você não desistiu até agora, pode relaxar, você deve se encontrar com um sistema Gerrit Code Review em funcionamento, hospedado por um Windows 2008 Server :) Não é tão comum quanto uma instalação e, como você pode ver, garante tudo passos. No entanto, alguns de nós têm recursos limitados e só podem usar o que é fornecido. Espero que este tutorial ajude aqueles que procuram executar o Gerrit em um ambiente semelhante. Você deve estar pronto agora para começar a usar o Gerrit! Desfrutar!

Para obter mais informações sobre o uso da Gerrit, consulte o guia do usuário do projeto Gerrit:

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

Obrigado Shawn Pierce pela ajuda no IRC!

Para referência futura

O tutorial foi convertido em documentação para o projeto Gerrit. Para os interessados ​​e precisa de uma boa referência. Por favor, veja a solicitação de patch aqui:

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


informações muito boas e completas. <p> padrão "Git for windows" do msysgit não inclui CGI.pm, como você trabalha para o gitweb?
Larrycai

Eu resolvi isso há um tempo atrás. Tenho anotações sobre como resolver esse problema. Vou ver se posso fornecer uma atualização aqui em breve.
Jason Huntley

Olá Larry, atualizei o tutorial e incluí a correção do problema GIT.pm. Voto a resposta se você achar útil esta postagem. Obrigado!
Jason Huntley

o gitweb pode funcionar como você descreve como CGI? Eu criei o gitweb.bat para empacotá-lo sem apache <p> Para CGI.pm, basta fazer o download do CGI.tar.gz e fazer o upload para / usr / lib / perl5 / site_perl é bom o suficiente. <p> o tutorial é muito completo, mas é ligeira difícil de seguir para um iniciante ;-)
larrycai

@larrycai, sim, eu escrevi este tutorial há algum tempo e ele realmente foi aprimorado e contribuiu para a documentação do projeto da Gerrit. Ainda está em revisão, mas quando for aprovado, atualizarei esta pergunta. Obrigado pelo feedback. Ah, sim, o gitweb definitivamente será executado como CGI via Apache.
21711 Jason Huntley
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.