Я решил пойти дальше и ответить на этот вопрос, так как он необходим сообществу Геррит. В настоящее время не так много учебных пособий по расширенным настройкам для Gerrit. Я надеюсь, что это поможет другим изучить XP / Agile практики и запустить Gerrit. Это отличный инструмент, когда вы преодолеете все тонкие задачи и детали настройки.
Этот учебник по установке довольно уникален тем, что он обслуживает определенную среду:
- Windows 2008 Server
- PostgreSql
- Кот
- LDAP через Active Directory
- Геррит
- msysgit
Прежде чем начать, убедитесь, что в вашей системе установлен git. Загрузите последний инструмент командной строки msysgit для Windows с http://code.google.com/p/msysgit/downloads/list
Убедитесь, что вы получили «Полный установщик для официального Git для Windows».
- Установите MSysGit
- Используйте значения по умолчанию при запросе
- Настроить Git
Если вы собираетесь использовать версию GitWeb в msysgit, вы заметите некоторые проблемы с CGI.pm. Я хотел бы упомянуть исправление, чтобы решить эту проблему.
Perl, включенный в дистрибутив msysgit, начиная с 1.7.8, не работает, http://groups.google.com/group/msysgit/browse_thread/thread/ba3501f1f0ed95af . Папка unicore отсутствует вместе с utf8_heavy.pl и CGI.pm. Вы можете проверить, проверив наличие модулей Perl:
perl -mCGI -mEncode -mFcntl -mFile :: Find -mFile :: Basename -e "" Вероятно, вы столкнетесь со следующим исключением:
$ perl -mCGI -mEncode -mFcntl -mFile :: Find -mFile :: Basename -e "" Не удается найти CGI.pm в @INC (@INC содержит: /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.). НАЧАЛО сбой - компиляция прервана.
Если вам не хватает CGI.pm, вам придется развернуть модуль в среде msys: вам нужно будет извлечь их из дистрибутива 5.8.8 в:
http://strawberryperl.com/releases.html
Файл: strawberry-perl-5.8.8.3.zip
содержимое: bin / lib / site /
скопируйте содержимое lib в msysgit / lib / perl5 / 5.8.8 и перезапишите существующие файлы.
Если вы используете командную строку git, добавьте свои глобальные параметры конфигурации в git:
git config --global user.name "Your Name"
git config --global user.email you@corporation.com
git config --global core.autocrlf false
Убедитесь, что используемые здесь учетные данные соответствуют учетным данным в gerrit. В противном случае Gerrit отклонит ваш запрос.
Инструкции по установке и настройке Gerrit следующие:
- Сначала войдите на сервер хостинга postgres и создайте пользователя и базу данных для Gerrit.
- createuser --username = postgres -A -D -P -E gerrit2
- createb --username = postgres -E UTF-8 -O gerrit2 reviewdb
- Теперь переключитесь обратно на хост, если он отличается, для Gerrit и создайте 3 каталога для развертывания Gerrit.
- Создайте базовый каталог установки для gerrit, предпочтительно версионный каталог для содержимого развертывания war
- Создать подкаталог для tomcat
- Создайте каталог конфигурации для развертывания схемы и конфигурации
- Содержимое должно выглядеть так:
- Геррит
- Загрузите tomcat с http://tomcat.apache.org/download-60.cgi
- Примечание. Большинство дистрибутивов Linux будут иметь это в своих менеджерах обновлений. Пример: использование Synaptic в Ubuntu
- Разверните свою установку Tomcat в каталог Tomcat
- Загрузите последнюю версию gerrit.war с
http://code.google.com/p/gerrit/downloads/list .
- скопировать файл в базовый каталог gerrit
- распаковать файл войны в подкаталог gerrit-XX
- CD в каталог Gerrit Base и запустите
java -jar gerrit-2.4-rc0.war
init -d config
- Эта конфигурация включает в себя дополнительные функции для LDAP и запуска за прокси-сервером, не настраивайте эти параметры, если они не нужны.
Выполнение:
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.
- Не беспокойтесь о настройке Gerrit в качестве серверов, мы настроим это позже
- Изменить конфигурацию \ etc \ gerrit.config
- в разделе gerrit добавьте параметр для conicalWebUrl =
http://review.corporation.com/
- Если ваши проекты не соответствуют традиционному формату project.git, добавьте следующий раздел:
- добавьте местоположение файла и URL на ваш сервер gitweb вместе со связанными свойствами
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}
- Если вы используете http / https для обслуживания, добавьте следующее:
Gerrit.config Обновление:
[download]
scheme = http
- Если вы используете LDAP с активным каталогом, вам нужно изменить настройки и добавить дополнительные настройки для поддержки AD:
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>
Вам не нужен коннектор AJP, если вы не собираетесь проксировать с Apache HTTP Server. Я использую его для разгрузки SSL-шифрования и управления сертификатами. Просто удалите его, если не нужно. Обязательно измените порт HTTP-соединителя на 80, если вы собираетесь работать в автономном режиме.
Приведенная выше конфигурация предназначена для использования с postgres. Если вы используете MySQL, вам придется заменить ресурс следующим для 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"
/>
Теперь вы готовы к настройке Gerrit как службы и включите систему проверки в режиме онлайн.
- Сначала настройте параметры Tomcat для запуска Gerrit как службы.
- Перейти к Tomcat / bin и редактировать service.bat
Параметры jvm устанавливаются отдельно для службы nt. Вы должны изменить файл service.bat перед установкой службы nt. Этот файл находится в каталоге tomcat / bin с другими сценариями startup.bat и shutdown. Прокрутите вниз до следующего раздела:
"%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
Измените эту строку, чтобы она соответствовала следующему:
"%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
Начальная память, jvmMs, определенно должна быть установлена на 512Mb для gerrit и расширена, JvmMx, до 1024Mb.
Теперь вы готовы развернуть Gerrit как сервис под Windows. Просто выполните следующее:
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>
Перейдите в диспетчер серверов и откройте узел «Службы». Откройте свойства для Gerrit и убедитесь, что вы установили тип запуска на Автоматический:
Применить и закрыть диалог.
ОК ... Мы уже закончили? К сожалению, нет, осталось всего несколько шагов. Повесить там.
Теперь вы готовы начать обслуживание. Просто выделите сервис Gerrit и нажмите опцию «Пуск» слева.
Просмотрите журналы в каталоге tomcat / log. Убедитесь, что нет ошибок. Если у вас есть проблемы, вы можете задать вопросы здесь или в списке рассылки gerrit:
http://groups.google.com/group/repo-discuss
Вы должны иметь возможность перейти в свой браузер и ввести URL-адрес своего сервера, чтобы просмотреть Gerrit сейчас: http://review.corporation.com:8080
Вам будет предложено ввести ваш открытый ключ ssh. Это необходимо, только если вы собираетесь использовать Git / Gerrit через ssh вместо HTTP. Я пошел вперед и настроил его, потому что это хороший вариант.
Настроить SSH
Сгенерируйте ключ ssh для доступа:
Администратор @ SERVER ~ / test $ ssh-keygen -t rsa
Зарегистрируйте новую учетную запись в Gerrit через веб-интерфейс с адресом электронной почты на ваш выбор. Первый пользователь, который войдет в систему и зарегистрирует учетную запись, будет автоматически помещен в полностью привилегированную группу администраторов, что позволит управлять сервером через Интернет и через SSH. Последующие пользователи будут автоматически зарегистрированы как непривилегированные пользователи.
После того, как вы вошли в систему как пользователь, вы найдете небольшого мастера для начала работы. Мастер поможет вам заполнить:
- Настоящее имя (видимое имя в Геррите)
- Зарегистрируйте вашу электронную почту (это должно быть подтверждено позже)
- Выберите имя пользователя для связи с Gerrit через ssh + git
Сервер запросит у вас открытый ключ RSA. Это ключ, который мы сгенерировали выше, и пришло время убедиться, что Геррит знает о нашем новом ключе и может идентифицировать нас по нему.
user @ host: ~ $ cat .ssh / id_rsa.pub
Настройте HTTP-доступ только для зарегистрированных пользователей, если ваш проект не открыт для общественности:
Создать HTTP-пароль
Несмотря на то, что вы настроили свой собственный логин, вам все равно нужно сгенерировать пароль для gerrit на сервер через http / https. Перейдите в раздел «Настройки» -> «Настройка пароля HTTP» и нажмите «Создать пароль». Используйте этот пароль для всех операций git через http (s).
Теперь мы можем проверить Геррит через HTTP. Вы должны иметь возможность клонировать любые проекты, существующие в репозитории, на который вы ссылаетесь в конфигурации Gerrit.
Тест с операцией клона
Administrator@SERVER ~/test
$ git clone https://review.corporation.com/sandbox
Протестируйте свой аккаунт 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.
Клонировать проект от Gerrit через 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.
Если вы еще не сдавались, вы можете расслабиться, вам следует воспользоваться работающей системой Gerrit Code Review, размещенной на Windows 2008 Server :) Это не так часто, как установка, и, как вы можете сказать, гарантирует все дополнительные шаги. Однако некоторые из нас имеют ограниченные ресурсы и могут использовать только то, что предоставлено. Я надеюсь, что это руководство поможет тем, кто хочет запустить Gerrit в аналогичной среде. Вы должны быть готовы сейчас начать использовать Gerrit! Наслаждайтесь!
Для получения дополнительной информации об использовании Gerrit, пожалуйста, обратитесь к руководству пользователя проекта Gerrit:
http://gerrit-documentation.googlecode.com/svn/Documentation/2.3/index.html
Спасибо Шон Пирс за помощь в IRC!
Для дальнейшего использования
Учебник был преобразован в документацию по проекту Gerrit. Для тех, кому интересно и нужна хорошая справка. Пожалуйста, посмотрите запрос патча здесь:
https://gerrit-review.googlesource.com/#/c/37072