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 [email protected]
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
- 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]: [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.
- 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:
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:
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://[email protected]:29418/REPOSITORY_NAME.g
it
Connection to localhost closed.
Clone um projeto da 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.
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