우연의 기회로 Gerrit 환경을 구축하게 되었습니다.

구축하게 되면서, 정리한 내용이니 참고하시길 바랍니다.

설치 환경

  1. JDK 1.7 이상 버전 설치
  2. Open SSH Server 설치
  3. Apache 설치
  4. Ubuntu 16.04 Version 설치

Gerrit Site

  1. Release Site : https://gerrit-releases.storage.googleapis.com/index.html
  2. English Helper Site : https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/install.html
  3. 참고 Site
    1. http://pseg.or.kr/pseg/infoinstall/1815
    2. https://d2.naver.com/helloworld/6236097
    3. https://www.hiroom2.com/2018/05/24/ubuntu-1804-gerrit-en/
    4. http://lazyrodi.github.io/2016/08/14/2016-08-14-etc-gerrit-installation/

Apache2

$ sudo apt-get install apache2

$ sudo apt-get install libapache2-mod-proxy-html (있으면 설치. 없으면 안해도 됨)

$ sudo apt-get install apache2-utils

$ sudo a2enmod proxy

$ sudo a2enmod proxy_http

$ sudo service apache2 restart

Open SSH Server

$ sudo apt-get install openssh-server

Git

$ sudo apt-get install git

Gerrit

  1. Web site 에서 Gerrit Download (3.1.4)
    1. Release Site : https://gerrit-releases.storage.googleapis.com/index.html
  2. Gerrit 다운로드 한 gerrit-3.1.4.war 파일 설치
    1. $ java -jar gerrit-3.1.4.war init -d ~/opt/gerrit
    2. a의 명령어 입력 후, 다음의 환경 설정 참고하여 입력
  3. Gerrit 검색 엔지 리빌드
    1. $ java -jar gerrit-3.1.4.war reindex -d ~/opt/gerrit
  4. Gerrit 실행
    1. $ cd ~/opt/gerrit/bin
    2. $ ./gerrit.sh start
  5. Apache Proxy 설정
    1. VirtualHost 파일 생성 (Apache VirtualHost File 참고)
      1. $ sudo vim /etc/apache2/sites-available/gerrit.conf
    2. Site Enabled 설정
      1. $ cd /etc/apache2/sites-enabled
      2. $ sudo ln -s ../sites-available/gerrit.conf ./001-gerrit.conf
      3. $ sudo a2ensite 001-gerrit.conf
    3. 기본 설정 파일의 Port 변경
      1. $ sudo vim /etc/apache2/sites-available/000-default.conf
      2. <VirtualHost *:80> 에서 <VirtualHost *:10080>으로 변경.

Apache VirtualHost File

<VirtualHost *:80>
    ServerName localhost
    ProxyRequests Off
    ProxyVia Off
    ProxyPreserveHost On
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
    <Location /login/>
        AuthType Basic
        AuthName "Gerrit Code Review"
        Require valid-user
        AuthUserFile /home/csjung/opt/gerrit/etc/passwords
    </Location>
    ProxyPass / http://127.0.0.1:8081/
    ProxyPassReverse / http://127.0.0.1:8081/
</VirtualHost>

 

Gerrit 환경설정


Location of Git repositories   [git]: /home/gerrit/repository/

 : 저장소 설정

   아무런 내용을 기입하지 않다면, 기본 저장소로 설정 됨.


Index Type [lucene]

 : 보조 검색 도구

   기본을 사용하면 됨.


*** User Authentication

***

 

Authentication method          [OPENID/?]: http  

Get username from custom HTTP header [y/N]?  

SSO logout URL                 :  http://aa:aa@127.0.0.1:80/login/

 : 사용자 인증 기능

   Gerrit 은 사용자 인증 기능을 제공하지 않는다.

   OpenID와 LDAP(Lightweight Directory Access Protocol), Site Minder 등 외부 인증 시스템 연동을 지원.

   SSO Layout 을 지정 해 주어야 함. 

   -> http://aa:aa@{IP Address}:{Port}/login/

   -> aa:aa 는 문자 그대로 입력해도 됨.

   Custom Header 는 기본을 사용할 시 N을 해주어야 함.


*** Review Labels

***

Install Verified label         [y/N]? y  

 : 검증 레이블

   Gerrit 기본 프로젝트인 All-project의 project.config 파일에 [label "Verified"]와 같이 검증 레이블 섹션을 추가


*** Email Delivery

***

SMTP server hostname           [localhost]:  smtp.gmail.com

SMTP server port               [(default)]:  465

SMTP encryption                [NONE/?]:  SSL

SMTP username                  :  XXX@gmail.com

 : E-Mail 알림 서비스 등록 (원하는 Email 도메인 계정으로 등록하면 됨)


*** Container Process

***

 

Run as                         [gerrit]:  

Java runtime                   

[/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71.x86_64/jre]:  

Copy gerrit-2.9.1.war to /home/gerrit/apps/gerrit/bin/gerrit.war [Y/n]?  

Copying gerrit-2.9.1.war to /home/gerrit/apps/gerrit/bin/gerrit.war  

 : 시스템에 설치된 Java Version을 확인하는 부분

   Gerrit 패키지 파일인 WAR 파일을 복사할 것인지 묻는 질문에는 Enter 키를 누르거나 Y를 입력해 패키지 파일을 Gerrit 설치 디렉터리로 복사


*** SSH Daemon

***

 

Listen on address              [*]:  

Listen on port                 [29418]:

 

Gerrit Code Review is not shipped with Bouncy Castle Crypto SSL 

v149  

  If available, Gerrit can take advantage of features

  in the library, but will also function without it.

Download and install it now [Y/n]?  

Downloading 

http://www.bouncycastle.org/download/bcpkix-jdk15on-149.jar ... OK  

Checksum bcpkix-jdk15on-149.jar OK

 

Gerrit Code Review is not shipped with Bouncy Castle Crypto Provider 

v149  

** This library is required by Bouncy Castle Crypto SSL v149. **

Download and install it now [Y/n]?  

Downloading 

http://www.bouncycastle.org/download/bcprov-jdk15on-149.jar ... OK  

Checksum bcprov-jdk15on-149.jar OK  

Generating SSH host key ... rsa... dsa… done

 : SSH Daemon Service 의 기본 설정


*** HTTP Daemon

***

 

Behind reverse proxy           [y/N]?  

Use SSL (https://)             [y/N]?  

Listen on address              [*]:  

Listen on port                 [8080]:  

Canonical URL                  [http://localhost:8080/]:  

 : HTTP 데몬 설정


*** Plugins

***

 

Install plugin commit-message-length-validator version v2.9.1 [y/N]? n  

Install plugin download-commands version v2.9.1 [y/N]? n  

Install plugin replication version v2.9.1 [y/N]? n  

Install plugin reviewnotes version v2.9.1 [y/N]? n  

Install plugin singleusergroup version v2.9.1 [y/N]? n

 : 설치 패키지를 미리 설치 할 지 문는 부분

Gerrit 환경 설정 정보 파일 (gerrit.config)

[gerrit]
    basePath = /home/csjung/repository/
    canonicalWebUrl = http://127.0.0.1/
    serverId = bcf3d6b4-bc5b-46d5-8594-8bf9e3ec9ed0
[container]
    javaOptions = "-Dflogger.backend_factory=com.google.common.flogger.backend.log4j.Log4jBackendFactory#getInstance"
    javaOptions = "-Dflogger.logging_context=com.google.gerrit.server.logging.LoggingContext#getInstance"
    user = csjung
    javaHome = /usr/lib/jvm/java-11-openjdk-amd64
[index]
    type = lucene
[auth]
    type = HTTP
    logoutUrl = http://aa:aa@127.0.0.1:80/login/
[receive]
    enableSignedPush = false
[sendemail]
    smtpServer = smtp.gmail.com
    smtpServerPort = 465
    smtpEncryption = SSL
    smtpUser = ****@gmail.com
[sshd]
    listenAddress = *:29418
[httpd]
    listenUrl = proxy-http://127.0.0.1:8081/
[cache]
    directory = cache

 

Gerrit 사용자 등록

  1. 관리자 계정 생성 
    $ htpasswd -c /home/gerrit/opt/gerrit/etc/passwords “admin”
    passwords파일을 처음 생성할 때에만 -c 옵션을 사용하며 이후 다른 계정을 추가할 때에는 그냥 아래와 같이 추가한다.
    $ htpasswd /home/gerrit/opt/gerrit/etc/passwords “usera”
  2. Apache 재시작 및 Gerrit 재시작
    $ sudo service apache2 restart
    $ cd ~/opt/gerrit/bin
    $ ./gerrit.sh restart

기타

  1. Gerrit 설치 성공 시, 생성되는 파일들
    etc/gerrit.config : Gerrit 설정 정보
    etc/secure.config : Password 와 같은 정보
  2. Error 발생 시, 로그 출력 위치
    logs/error_log : Gerrit Error Log File

참고

  1. Google Mail 연동 시, 인증 에러가 날 경우.
    -> Google My Account 로 가서 "보안" > "보안 수준이 낮은 앱의 액세스" 활성화 하면 됨.

'기타' 카테고리의 다른 글

넥서스 S 바이너리 올리기  (0) 2012.11.25
[Hudson] 자동 빌드 설정 방법  (0) 2012.08.10
VPN  (0) 2011.05.03
SVN GUI TOOL[SVN Tool - RapidSVN 사용법]  (0) 2011.02.09
SVN  (0) 2011.02.09

+ Recent posts