"Gerrit"의 두 판 사이의 차이

오픈소스 비즈니스 컨설팅
둘러보기로 가기 검색하러 가기
잔글
잔글
 
(같은 사용자의 중간 판 27개는 보이지 않습니다)
1번째 줄: 1번째 줄:
 
[[Git|Git]]을 사용하는, 구글의 안드로이드 프로젝트에서 사용하고 있는 코드리뷰 소프트웨어인 Gerrit를 정리 합니다.
 
[[Git|Git]]을 사용하는, 구글의 안드로이드 프로젝트에서 사용하고 있는 코드리뷰 소프트웨어인 Gerrit를 정리 합니다.
  
*홈페이지 : 
+
*홈페이지 : [https://www.gerritcodereview.com/ https://www.gerritcodereview.com/]
*다운로드 : 
+
**https://gerrit.googlesource.com/
 +
*다운로드 : [https://gerrit-releases.storage.googleapis.com/index.html https://gerrit-releases.storage.googleapis.com/index.html]
 +
**Plugin : [https://gerrit-review.googlesource.com/Documentation/config-plugins.html https://gerrit-review.googlesource.com/Documentation/config-plugins.html]
 
*라이선스 : 
 
*라이선스 : 
*플랫폼 : [[Java|Java]]
+
*플랫폼 : [[Java|Java]], GWT (Google Web Toolkit)
  
 
== 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
 +
 +
 +
 +
https://gerrit-documentation.storage.googleapis.com/Documentation/2.11.3/images/intro-quick-central-gerrit.png
 +
 +
== CentOS에서 Gerrit 설치 ==
 +
 +
*인증 방식 : Open ID, HTTP, [[LDAP|LDAP]]
 +
*<span style="line-height: 1.6;">WAS</span><span style="line-height: 1.6;">&nbsp;: </span>[[Jetty|Jetty]]<span style="line-height: 1.6;">, </span>[[Tomcat|Tomcat]]
 +
*Database&nbsp;:&nbsp;[http://www.jopenbusiness.com/mediawiki/H2 H2],&nbsp;[http://www.jopenbusiness.com/mediawiki/MySQL MySQL],&nbsp;[http://www.jopenbusiness.com/mediawiki/PostgreSQL PostgreSQL]
 +
*Others&nbsp;: JDK, OpenSSH, git
 +
 +
<span style="color:#008000;">'''<span style="font-size:larger;">Apache HTTP Server 설치</span>'''</span>
 +
 +
yum install httpd httpd-tools openssl mod_ssl
 +
 +
vim&nbsp;/etc/httpd/conf.d/options.conf
 +
 +
&nbsp; &nbsp; TraceEnable off
 +
 +
&nbsp; &nbsp; ## Disable Signature<br/>&nbsp; &nbsp; ServerSignature Off
 +
 +
&nbsp; &nbsp; ## Disable Banner<br/>&nbsp; &nbsp; ServerTokens Prod
 +
 +
vim /etc/httpd/conf.d/vhosts.conf
 +
 +
 +
 +
&nbsp; &nbsp; # Load my vhosts<br/>&nbsp; &nbsp; Include vhosts.d/*.conf
 +
 +
 +
 +
mkdir /etc/httpd/vhosts.d
 +
 +
vim /etc/httpd/vhosts.d/gerrit.conf
 +
 +
&nbsp; &lt;VirtualHost *:80&gt;<br/>&nbsp; &nbsp; &nbsp; ServerName gerrit.osscloud.biz
 +
 +
&nbsp; &nbsp; &nbsp; ProxyRequests Off<br/>&nbsp; &nbsp; &nbsp; ProxyVia Off<br/>&nbsp; &nbsp; &nbsp; ProxyPreserveHost On
 +
 +
&nbsp; &nbsp; &nbsp; &lt;Proxy *&gt;<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Order deny,allow<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Allow from all<br/>&nbsp; &nbsp; &nbsp; &lt;/Proxy&gt;
 +
 +
&nbsp; &nbsp; &nbsp; &lt;Location /login/&gt;<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; AuthType Basic<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; AuthName "Gerrit Code Review"<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Require valid-user<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; AuthUserFile /etc/httpd/gerrit.htpasswd<br/>&nbsp; &nbsp; &nbsp; &lt;/Location&gt;
 +
 +
&nbsp; &nbsp; &nbsp; ProxyPass / [http://127.0.0.1:8080/ http://127.0.0.1:8080/]<br/>&nbsp; &lt;/VirtualHost&gt;
 +
 +
htpasswd -c /etc/httpd/gerrit.htpasswd admin
 +
 +
service httpd restart
 +
 +
 +
 +
<span style="color:#008000;">'''<span style="font-size:larger;">Gerrit 설치</span>'''</span>
 +
 +
cd ~/install
 +
 +
wget&nbsp;[https://www.gerritcodereview.com/download/gerrit-2.11.2.war 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&nbsp;/cloudnas/appl/gerrit
 +
 +
./bin/gerrit.sh restart
 +
 +
 +
 +
사용 Port&nbsp;: 29418
 +
 +
== Gerrit 한글화 ==
 +
 +
gerrit.war 파일에 포함되어 있는&nbsp;gerrit_ui/deferredjs/*/3.cache.js 파일에서 메시지를 찾아서 수정 합니다.
 +
 +
== 관리자 매뉴얼 ==
 +
 +
=== Girrit의 고유 구조 ===
 +
 +
 +
 +
*refs/for/master : refs/heads/master의 변경 사항 정보를 저장하는 reference
 +
 +
=== 메뉴 구조 ===
 +
 +
{| border="1" cellspacing="0" cellpadding="2" style="width:100%;"
 +
|-
 +
| style="text-align: center; background-color: rgb(204, 204, 204);" | 메뉴
 +
| style="text-align: center; background-color: rgb(204, 204, 204);" | 하위 메유
 +
| style="text-align: center; background-color: rgb(204, 204, 204);" | 상세
 +
|-
 +
| style="text-align: center;" | All
 +
| style="text-align: center;" | Open
 +
| Push된 코드 관리
 +
|-
 +
| style="text-align: center;" | <br/>
 +
| style="text-align: center;" | Merged
 +
| Merged된 코드 관리
 +
|-
 +
| style="text-align: center;" | <br/>
 +
| style="text-align: center;" | Abandoned
 +
| Abandoned된 코드 관리
 +
|-
 +
| style="text-align: center;" | My
 +
| style="text-align: center;" | Changes
 +
| <br/>
 +
|-
 +
| style="text-align: center;" | <br/>
 +
| style="text-align: center;" | Drafts
 +
| <br/>
 +
|-
 +
| style="text-align: center;" | <br/>
 +
| style="text-align: center;" | Drafts Comments
 +
| <br/>
 +
|-
 +
| style="text-align: center;" | <br/>
 +
| style="text-align: center;" | Watched Changes
 +
| <br/>
 +
|-
 +
| style="text-align: center;" | <br/>
 +
| style="text-align: center;" | Starred Changes
 +
| <br/>
 +
|-
 +
| style="text-align: center;" | <br/>
 +
| style="text-align: center;" | Groups
 +
| <span style="line-height: 20.7999992370605px;">그룹과 그룹 구성원 관리</span><br/>
 +
|-
 +
| style="text-align: center;" | Projects
 +
| style="text-align: center;" | List
 +
| 프로젝트 목록 조회
 +
|-
 +
| style="text-align: center;" | <br/>
 +
| style="text-align: center;" | General
 +
| 프로젝트의 일반 정보 조회/관리
 +
|-
 +
| style="text-align: center;" | <br/>
 +
| style="text-align: center;" | Branches
 +
| 프로젝트의 브랜치 조회/관리
 +
|-
 +
| style="text-align: center;" | <br/>
 +
| style="text-align: center;" | Access
 +
| 프로젝트 접근 권한 조회/관리
 +
|-
 +
| style="text-align: center;" | <br/>
 +
| style="text-align: center;" | Dashboards
 +
| <br/>
 +
|-
 +
| style="text-align: center;" | <br/>
 +
| style="text-align: center;" | Create New Project
 +
| 프로젝트 생성
 +
|-
 +
| style="text-align: center;" | People
 +
| style="text-align: center;" | List Groups
 +
| 그룹 목록 조회
 +
|-
 +
| style="text-align: center;" | <br/>
 +
| style="text-align: center;" | Create New Group
 +
| 그룹 생성
 +
|-
 +
| style="text-align: center;" | Documentation
 +
| style="text-align: center;" | Table of Contents
 +
| <br/>
 +
|-
 +
| style="text-align: center;" | <br/>
 +
| style="text-align: center;" | Searching
 +
| <br/>
 +
|-
 +
| style="text-align: center;" | <br/>
 +
| style="text-align: center;" | Uploading
 +
| <br/>
 +
|-
 +
| style="text-align: center;" | <br/>
 +
| style="text-align: center;" | Access Controls
 +
| <br/>
 +
|-
 +
| style="text-align: center;" | <br/>
 +
| style="text-align: center;" | REST API
 +
| <br/>
 +
|-
 +
| style="text-align: center;" | <br/>
 +
| style="text-align: center;" | Project Owner Guide
 +
| <br/>
 +
|-
 +
| style="text-align: center;" | Settings
 +
| style="text-align: center;" | Profile
 +
| 사용자 정보<br/>Username 변경 가능<br/>
 +
|-
 +
| style="text-align: center;" | <br/>
 +
| style="text-align: center;" | Preferences
 +
| 화면 설정 정보 관리
 +
|-
 +
| style="text-align: center;" | <br/>
 +
| style="text-align: center;" | Watched Projects
 +
| 모니터링할 프로젝트와 모니터링 범위 설정
 +
|-
 +
| style="text-align: center;" | <br/>
 +
| style="text-align: center;" | Contact Information
 +
| 사용자 이름과 이메일 관리
 +
|-
 +
| style="text-align: center;" | <br/>
 +
| style="text-align: center;" | SSH Public Keys
 +
| 사용자가 Git 접속시 사용할 SSH 공개키 관리
 +
|-
 +
| style="text-align: center;" | <br/>
 +
| style="text-align: center;" | HTTP Password
 +
| HTTP 접속시 사용할 비밀번호 관리
 +
|-
 +
| style="text-align: center;" | <br/>
 +
| style="text-align: center;" | Identities
 +
| 사용자의 Identity 관리
 +
|-
 +
| style="text-align: center;" | <br/>
 +
| style="text-align: center;" | Groups
 +
| 그룹과 그룹 구성원 관리
 +
|}
 +
 +
=== Project 삭제 ===
 +
Repository를 삭제한 후 Gerrit를 재기동 합니다.
  
 
== 참고 문헌 ==
 
== 참고 문헌 ==
14번째 줄: 259번째 줄:
 
*[[Jenkins|Jenkins]]
 
*[[Jenkins|Jenkins]]
 
*[https://www.mediawiki.org/wiki/Gerrit/Tutorial https://www.mediawiki.org/wiki/Gerrit/Tutorial]
 
*[https://www.mediawiki.org/wiki/Gerrit/Tutorial https://www.mediawiki.org/wiki/Gerrit/Tutorial]
 +
*[https://www.gerritcodereview.com/ https://www.gerritcodereview.com/]
 
*[http://pseg.or.kr/pseg/infoinstall/1780 Gerrit 코드리뷰(Code Review) 설치 가이드 1부 - 준비]
 
*[http://pseg.or.kr/pseg/infoinstall/1780 Gerrit 코드리뷰(Code Review) 설치 가이드 1부 - 준비]
 +
*[https://www.rosehosting.com/blog/how-to-install-gerrit2-on-a-centos-7-linux-vps/ https://www.rosehosting.com/blog/how-to-install-gerrit2-on-a-centos-7-linux-vps/]
 
*[http://pseg.or.kr/pseg/infoinstall/1791 Gerrit 코드리뷰(Code Review) 설치 가이드 2부 - Http 인증 설정]
 
*[http://pseg.or.kr/pseg/infoinstall/1791 Gerrit 코드리뷰(Code Review) 설치 가이드 2부 - Http 인증 설정]
 
*[http://pseg.or.kr/pseg/infoinstall/1802 Gerrit 코드리뷰(Code Review) 설치 가이드 3부 - Gerrit 설치]
 
*[http://pseg.or.kr/pseg/infoinstall/1802 Gerrit 코드리뷰(Code Review) 설치 가이드 3부 - Gerrit 설치]
 
*[http://pseg.or.kr/pseg/infoinstall/1815 Gerrit 코드리뷰(Code Review) 설치 가이드 4부 - Gerrit 설정]
 
*[http://pseg.or.kr/pseg/infoinstall/1815 Gerrit 코드리뷰(Code Review) 설치 가이드 4부 - Gerrit 설정]
 
[[Category:DevOps|Category:DevOps]]
 
[[Category:DevOps|Category:DevOps]]

2018년 1월 3일 (수) 10:20 기준 최신판

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를 재기동 합니다.

참고 문헌