반응형

기존에 주로 사용하던 SVN을 드러내고, Git으로 갈아타면서

코드 리뷰 시스템인 Gerrit을 사용해보기로 하였고, Gerrit을 사용하는 김에 Jenkins를 통해 verify하는 기능까지 연동해보기로 하였다.

일단 Gerrit을 사용하기 위해서는, 기본적으로 JDK가 필요하다.

 

1. JDK 설치

 - openJDK로 해도 되고, 소스 설치를 해도 됨. (이건 알아서...) 

 

2. Gerrit 다운로드 (버전 업이 자주되므로, 최신버전을 추천) 

 - http://gerrit-releases.storage.googleapis.com/index.html  

 - war파일 하나가 받아진다. 

 

3. Gerrit 설치

 - java -jar gerrit-2.9-1.war init -d /usr/local/gerrit-2.9.1/

 - 위 명령어를 실행하면, 뭔가 막 고르라고 나오는데, 대충 엔터를 치면 넘어가지만, 중요한 옵션들이 있다.  

DataBase Type, Authentification Method, Java Runtime은 신경써서 지정해주자. (잘못 지정해도 나중에 수정이 가능하긴함)

 

4. Apache  / mod_proxy 설치

 - Gerrit은 기본적으로 apache / nginx등의 proxy기능을 요구한다. (여기선 apache 기준으로 설명)

 - Apache는 2.2.xx 버전을 소스 컴파일로 설치할 것을 추천한다. (2.4.xx 버전은 apr-util등이 yum으로 설치 시에 버전이 낮다고 에러를 뿜는다.)

 - 설치 시 옵션은 아래 명령어 정도만 주면 된다. 

./configure --prefix=/usr/local/httpd-2.2.24 --enable-module=proxy  

 - 이렇게 설치 하면 보통은 apache/modules 폴더에 mod_proxy관련된 라이브러리 2개가 생겨야 하는데, 생기지 않는 경우 아래 링크를 참조한다. (라이브러리만 수동으로 컴파일하는 방법) 

http://blog.pointbre.com/2794/mod_proxy-%EC%84%A4%EC%B9%98-%EC%84%A4%EC%A0%95.html 

 

 - 이제 아파치 설정을 수정해보자.

 - httpd.conf에서 include httpd-vhosts.conf 항목을 주석 해제해주고, 포트도 80이 아닌 다른 포트로 적절히 바꾸어 준다.

(ex : Listen 8181) 

 

 - extra/httpd-vhosts.conf 에서 proxy설정을 해줌.

[httpd-vhosts.conf] 

NameVirtualHost *:8181 
<VirtualHost *:8181>
    ServerName localhost

    ProxyRequests Off
    ProxyVia Off
    ProxyPreserveHost On

    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy> 

    
    <Location /login/ >    // login/ 경로에 대해서만 아래 인증 정보로 인증을 수행함.
        AuthType Basic
        AuthName "Gerrit Code Review"
        Require valid-user
        AuthUserFile /usr/local/gerrit-2.9.1/etc/passwords       // gerrit인증에 사용될 인증정보가 들어가 있는 파일
    </Location>

    AllowEncodedSlashes On      // 이 옵션이 없으면, Gerrit에서 / 가 들어간 경로로 진입할 때, permission이 없다고 나옴..

                                                    // 왜 안되지 하는데, 공식홈에 나와있었음;;
    # gerrit location
    ProxyPass / http://gerritHost:gerritPort nocanon     // nocanon은 없어도 잘 동작하지만, gerrit 공식 홈피 가이드에 나와있어서 추가
</VirtualHost> 

 

 - gerrit에도 proxy정보를 추가해주자. 

[gerrit.config]

[gerrit]
        basePath = git
        canonicalWebUrl = http://apacheHost:apachePort/
[database]
        type = h2
        database = db/ReviewDB
[index]
        type = LUCENE
[auth]
        type = HTTP
[container]
        user = root
        javaHome = /opt/jdk1.7.0_67/   
[sshd]
        listenAddress = *:29418
[httpd]
        listenUrl = proxy-http://gerritHost:gerritPort/
[cache]
        directory = cache 

 

 - htpasswd를 이용하여 Gerrit로그인에 사용될 사용자 계정을 등록해 주자.

/usr/local/apache2/htpasswd -c /usr/local/gerrit-2.9.1/etc/passwords ID PASSWORD

 - 브라우저에 http://apacheHost:apachePort/login/ 입력 후 위에 지정한 ID, PASSWORD로 로그인을 시도하면 로그인이 된다.


5. Verified Label 추가하기 (참고 : http://blog.bruin.sg/2013/04/how-to-edit-the-project-config-for-all-projects-in-gerrit/) 

 - Gerrit 2.9.1 버전 기준으로, Web UI상에서 Code Review Label밖에 없다. 하지만, jenkins에서 verify를 수행하게 하려면

Gerrit에서도 verify Label이 적용되어 있어야 함.

 - 로컬에서 git bash등으로 아래 명령어를 실행함. 

 

mkdir tmp      // 임시 폴더를 만든다.
cd tmp
git init       // 임시 폴더를 git repository로 지정
git remote add origin ssh://host:29418/All-Projects       // All-Projects를 땡겨온다.
git fetch origin refs/meta/config:refs/remotes/origin/meta/config       // remote의 meta/config branch를 땡겨온다.
git checkout meta/config        // 브랜치 이동

project.config가 보이는데, vi등으로 열어서 가장 하단에 아래 내용을 추가해준다.
 
[label "Verified"]
       function = MaxWithBlock
       value = -1 Fails
       value =  0 No score
       value = +1 Verified

git commit -a
git push origin meta/config:meta/config

※ 기본적으로 git config에 user.name, user.email이 세팅되어 있어야 하며, 
세팅되어 있음에도 불구하고, invalid author 등의 에러를 뱉는 경우 Gerrit에 등록되어 있는 계정이 email정보를 가지고 있는지 확인한다.
(계정이 없는 경우, Settings/Contect Informations에서 새로운 이메일을 등록 후, 해당 이메일로 이동해서 verify url을 클릭해주면 된다. - 스팸메일 / 정크메일로 구분되어 있을 확률이 높다.)

※ Change Id 체크 옵션은 Gerrit의 All-Projects로 들어가서 꺼주어야 한다.

너무 길어져서 다음 포스트로 넘어감..


반응형
,