-
Gerrit 설치 ( Open source git code review system )Git 2020. 12. 4. 19:51728x90
안녕하세요. 예전에 Gerrit 서버 설치하면서 정리했던 글입니다.
- 정의
http://wiki.pchero21.com/wiki/Gerrit - 설치방법
- OS : ubuntu 16.04.02 server x86_64 설치
설치 과정에서 root driver의 용량이 2TB를 넘으니 에러나는 문제가 발생해서 LVM으로 논리 파티션 분리해서 설치 완료 - hostname 변경
- /etc/hostname을 gerrit으로 변경
- /etc/hosts에 localhost옆에 공백띄위고 gerrit-se.samsung.net 입력
- server reboot
- Proxy 셋팅
- jdk 설치 (1.8)
- jdk file download (oracle home page)
- /usr/local 에 압축해제
- 심볼릭 링크 생성
sudo ln -s /usr/local/java-8-oracle java -
환경변수 지정
vi /etc/profile
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
PATH=$PATH:$JAVA_HOME/bin
- Apache 셋팅
-
설치
$ sudo apt-get install apache2
$ sudo a2enmod proxy
$ sudo a2enmod proxy_http
$ sudo service apache2 restart
-
/etc/apache2/site-available 에 gerrit.conf 파일 생성
$ sudo vim /etc/apache2/site-available/gerrit.conf
gerrit.conf
<VirtualHost *:80>
#ServerName gerrit-se.samsung.net
ServerName 10.220.212.34
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/abat/apps/gerrit/etc/passwords
</Location>
ProxyPass / http://127.0.0.1:8080/ nocanon
ProxyPassReverse / http://127.0.0.1:8080/
AllowEncodedSlashes On
</VirtualHost>
-
/etc/apache2/site-enable에서 앞서 생성한 gerrit.conf의 심볼릭 링크를 생성
$ sudo ln -s ../site-available/gerrit.conf 001-gerrit.conf
-
/etc/apache2/ports.conf를 수정
ports.conf
NameVirtualHost *:80
Listen 80
-
- MySQL 설치
- 설치
sudo apt-get install mysql mysql-client - mysql 한글 설정
https://bitdaehan.blogspot.kr/2017/01/ubuntu-mysql-57.html -
gerrit_admin계정 생성 및 DB생성
CREATE USER 'gerrit_admin'@'localhost' IDENTIFIED BY 'password';
CREATE DATABASE reviewdb;
GRANT ALL ON reviewdb.* TO 'gerrit_admin'@'localhost';
FLUSH PRIVILEGES;
- 설치
- phpmyadmin 설치
- Git 설치
- Gerrit설치
- 설치 후 에러에 DB관련 문제가 있어 확인
- mysql config 수정 및 table 수동 생성 : https://groups.google.com/forum/#!topic/repo-discuss/fmHMQpN-qMQ
-
mysql.conf
[mysql]
sql_mode = "ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
-
Create Table into Database
mysql> use reviewdb
mysql> CREATE TABLE account_group_by_id_aud (added_by INT DEFAULT 0 NOT NULL, removed_by INT, removed_on TIMESTAMP NULL DEFAULT NULL, group_id INT DEFAULT 0 NOT NULL, include_uuid VARCHAR(255) BINARY DEFAULT '' NOT NULL, added_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY(group_id,include_uuid,added_on));
mysql> CREATE TABLE account_group_members_audit (added_by INT DEFAULT 0 NOT NULL, removed_by INT, removed_on TIMESTAMP NULL DEFAULT NULL, account_id INT DEFAULT 0 NOT NULL, group_id INT DEFAULT 0 NOT NULL, added_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY(account_id,group_id,added_on));
mysql> CREATE TABLE changes (change_key VARCHAR(60) BINARY DEFAULT '' NOT NULL, created_on TIMESTAMP NOT NULL, last_updated_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, owner_account_id INT DEFAULT 0 NOT NULL, dest_project_name VARCHAR(255) BINARY DEFAULT '' NOT NULL, dest_branch_name VARCHAR(255) BINARY DEFAULT '' NOT NULL, status CHAR(1) DEFAULT ' ' NOT NULL, current_patch_set_id INT DEFAULT 0 NOT NULL, subject VARCHAR(255) BINARY DEFAULT '' NOT NULL, topic VARCHAR(255) BINARY, original_subject VARCHAR(255) BINARY, submission_id VARCHAR(255) BINARY, note_db_state TEXT, row_version INT DEFAULT 0 NOT NULL, change_id INT DEFAULT 0 NOT NULL ,PRIMARY KEY(change_id));
- mysql config 수정 및 table 수동 생성 : https://groups.google.com/forum/#!topic/repo-discuss/fmHMQpN-qMQ
-
apache2의 mode-enable에서 proxy.conf를 수정ProxyPass /gerrit http://gerrit-se.samsung.net
ProxyPassReverse /gerrit http://gerrit-se.samsung.net
ProxyRequests Off
<Proxy http://gerrit-se.samsung.net>
Order deny,allow
Allow from all
</Proxy>
-
Git Web설치
아래가 config 설정에 대해서 잘 설정함
http://blog.daum.net/junek69/37
https://gerrit-documentation.storage.googleapis.com/Documentation/2.14/config-gitweb.html#_internal_managed_gitweb
apt-get 추가 설치에 대한 내용
http://lazyrodi.github.io/2016/08/13/2016-08-13-etc-use-gitweb/ -
gerrit.config 파일 수정
[gerrit]
basePath = git
serverId = def47204-d081-47a2-9a72-31b3e4b22267
canonicalWebUrl = http://10.220.212.34/
[database]
type = mysql
hostname = localhost
database = reviewdb
username = gerrit_admin
[index]
type = LUCENE
[auth]
type = HTTP
logoutUrl = http://10.220.212.34/login/
emailFormat = {0}@samsung.com
[receive]
enableSignedPush = false
[sendemail]
smtpServer = 10.220.202.25
smtpServerPort = 25
smtpUser = tgiftest@gvrplatform.test
smtpPass = platform
[user]
email = dj77.kwon@samsung.com
[container]
user = abat
javaHome = /usr/lib/jvm/java-8-openjdk-amd64/jre
[sshd]
listenAddress = *:29418
[httpd]
listenUrl = proxy-http://localhost:8080/
[cache]
directory = cache
[gitweb]
type = gitweb
cgi = /usr/lib/cgi-bin/gitweb.cgi
-
Apache Ant 설치
$ sudo apt-get install ant
-
Buck 설치
- Buck download
가능하면 git clone으로 하고 안되면 zip file download
URL : https://github.com/facebook/buck - .bashrc에 path추가
- Buck install
- Buck download
- PlugIg 추가
- 필요한 plugIn source를 download
- Buck로 build
- 사용법
-
사용자 추가
$ htpasswd ~/apps/gerrit/etc/passwords "user"
-
admin 가이드
http://pseg.or.kr/pseg/infoinstall/1815-
Access control 옵션별 설명
https://gerrit-documentation.storage.googleapis.com/Documentation/2.14/access-control.html\ -
사용자 권한
-
과제 기본 권한 ( push, label, review, submit )
Project > Access > Edit로 이동
Reference : refs/heads/* 에서 사용자 권한 설정, Group이나 Registered Users로 등록.Label Code-Review : 티켓 점수 권한설정
Push : Push권한
Submit : Submit권한
- branch 권한 설정
refs/*에서 Create Refernce 권한을 부여한다.
https://gerrit-review.googlesource.com/Documentation/access-control.html#category_ownerhttps://gerrit-review.googlesource.com/Documentation/cmd-create-branch.html
-
-
Project config file 수정
https://gerrit-review.googlesource.com/Documentation/user-notify.html- gerrit 서버에서 ssh key를 생성하고 gerrit admin계정에 등록
- 원하는 project를 clone
-
fetch진행
$ git fetch ssh://gerrit_admin@10.220.212.34:29418/STBPlugIn refs/meta/config
-
checkout해서 원하는 버전만 남기기
$ git checkout FETCH_HEAD
- 수정
- commit 및 push
-
신규 Label 추가법
http://www.yocto.co.kr/2015/10/gerrit-label.html - 삽질기
http://lazyrodi.github.io/2016/08/14/2016-08-14-etc-use-gerrit/ - patch에 대한 설명과 tab push방법
http://blog.naver.com/PostView.nhn?blogId=jegumhon&logNo=220515571823&redirect=Dlog&widgetTypeCall=true - Gerrit에서 submodule 생성 및 관리
https://git.wiki.kernel.org/index.php/Gerrit_Submodules_Supporthttp://pseg.or.kr/pseg/index.php?mid=infouse&document_srl=7337&listStyle=viewer
https://gerrit-review.googlesource.com/Documentation/user-submodules.html
- gerrit submodule merge
https://gerrit-review.googlesource.com/Documentation/user-submodules.html
- gerrit submodule merge
- 플러그인 CI 사이트
https://gerrit-ci.gerritforge.com/ - 만약 빌드시에는 2.14부터 Bazel로 빌드 tool이 변경되었으니 이걸 참고.
- Plugin
- Project 삭제 : delete-project
- Default Reviewer설정 : reviewers
http://blogs.collab.net/teamforge/gerrit-productivity-hacks-add-default-reviewer- default reviewer설정을 config file로 수정 (refs/meta/config받아서...)
https://gerrit.googlesource.com/plugins/reviewers/+doc/master/src/main/resources/Documentation/config.md
- default reviewer설정을 config file로 수정 (refs/meta/config받아서...)
- Mail Template 수정
- Gerrit 설치 폴더에서 etc/mail/ 아래에 각 file을 .example을 제거하고 복사후 수정하면 반영됨
http://10.220.212.34/Documentation/config-mail.html - Change mail의 제목을 변경하려면 ChangeSubject.soy파일을 수정한다.
추가하려는 옵션을 @param에 추가하고 template에서 {$속성} 이렇게 추가한다.
- Gerrit 설치 폴더에서 etc/mail/ 아래에 각 file을 .example을 제거하고 복사후 수정하면 반영됨
-
-
소개자료 및 설치(내용 good)
http://d2.naver.com/helloworld/6033708http://pseg.or.kr/pseg/index.php?mid=infoinstall&page=2&document_srl=1780Gerrit Slave/Mirrot 구성하기
http://pseg.or.kr/pseg/index.php?mid=infouse&page=1&document_srl=7475
Gerrit Plugin Build
http://pseg.or.kr/pseg/index.php?mid=infouse&page=1&document_srl=6338
Synology NAS에 Maria DB설치
https://extrememanual.net/3886http://junemoon.tistory.com/134SonarQube
오픈소스. jenkins/이클립스 플러그인 있음. gerrit연동방법 고민...C#지원
'Git' 카테고리의 다른 글
Git 설치 및 사용법 (0) 2020.11.18 - 정의