Gerrit

오픈소스 비즈니스 컨설팅
둘러보기로 가기 검색하러 가기

Git을 사용하는, 구글의 안드로이드 프로젝트에서 사용하고 있는 코드리뷰 소프트웨어인 Gerrit를 정리 합니다.

Gerrit 개요

Code Review (코드 리뷰)는 프로그램 소스 코드 검토를 통해 소스 코드에서 간과하고 지나친 오류를 찾아내 코드의 품질을 향상 시키는 활동이다. Code review를 통해 프로그램의 잠재적 오류 가능성을 낮추어 테스트와 유지보수 비용을 줄이고 취약점을 제거해 보안을 높입니다. 여러가지 Code review 도구들이 있으나 Gerrit가 사용하기 편리 하다.


코드의 품질을 향상 시키는 도구

  • Gerrit : 코드 리뷰
  • Jenkins : 자동 빌드, 자동으로 테스트 케이스 실행, 코드 품질 측정 플러그인


Gerrit는 일정 점수 이상의 코드 리뷰 점수를 획득하여야 수정한 코드가 반영이 되는 Code Review 자동화 시스템 이다.

  • 요구 사항
  • Branch 생성
  • Branch Checkout
  • 반복되는 개발 프로세스
    • 개발 > 단위 테스트 > Local Commit
    • Push (> CI 도구에서 코드 검증)
    • Code Review
    • 통합 테스트
  • 배포
  • Merge Branch


intro-quick-central-gerrit.png

CentOS에서 Gerrit 설치

Apache HTTP Server 설치

yum install httpd httpd-tools openssl mod_ssl

vim /etc/httpd/conf.d/options.conf

    TraceEnable off

    ## Disable Signature
    ServerSignature Off

    ## Disable Banner
    ServerTokens Prod

vim /etc/httpd/conf.d/vhosts.conf


    # Load my vhosts
    Include vhosts.d/*.conf


mkdir /etc/httpd/vhosts.d

vim /etc/httpd/vhosts.d/gerrit.conf

  <VirtualHost *:80>
      ServerName gerrit.osscloud.biz

      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 /etc/httpd/gerrit.htpasswd
      </Location>

      ProxyPass / http://127.0.0.1:8080/
  </VirtualHost>

htpasswd -c /etc/httpd/gerrit.htpasswd admin

service httpd restart


Gerrit 설치

cd ~/install

wget https://www.gerritcodereview.com/download/gerrit-2.11.2.war

java -jar ~/install/*.war init -d /cloudnas/appl/gerrit

vim /cloudnas/appl/gerrit/etc/gerrit.config

cd /cloudnas/appl/gerrit

./bin/gerrit.sh restart


사용 Port : 29418

Gerrit 한글화

gerrit.war 파일에 포함되어 있는 gerrit_ui/deferredjs/*/3.cache.js 파일에서 메시지를 찾아서 수정 합니다.

관리자 매뉴얼

Girrit의 고유 구조

  • refs/for/master : refs/heads/master의 변경 사항 정보를 저장하는 reference

메뉴 구조

메뉴 하위 메유 상세
All Open Push된 코드 관리

Merged Merged된 코드 관리

Abandoned Abandoned된 코드 관리
My Changes

Drafts

Drafts Comments

Watched Changes

Starred Changes

Groups 그룹과 그룹 구성원 관리
Projects List 프로젝트 목록 조회

General 프로젝트의 일반 정보 조회/관리

Branches 프로젝트의 브랜치 조회/관리

Access 프로젝트 접근 권한 조회/관리

Dashboards

Create New Project 프로젝트 생성
People List Groups 그룹 목록 조회

Create New Group 그룹 생성
Documentation Table of Contents

Searching

Uploading

Access Controls

REST API

Project Owner Guide
Settings Profile 사용자 정보
Username 변경 가능

Preferences 화면 설정 정보 관리

Watched Projects 모니터링할 프로젝트와 모니터링 범위 설정

Contact Information 사용자 이름과 이메일 관리

SSH Public Keys 사용자가 Git 접속시 사용할 SSH 공개키 관리

HTTP Password HTTP 접속시 사용할 비밀번호 관리

Identities 사용자의 Identity 관리

Groups 그룹과 그룹 구성원 관리

Project 삭제

Repository를 삭제한 후 Gerrit를 재기동 합니다.

참고 문헌