gerritのインストール方法


Table of Contents

1 gerritパッケージのインストール

こちらを参考にgerritパッケージをDebian 8にインストールします。

$ sudo su -c ‘echo “deb mirror://mirrorlist.gerritforge.com/deb gerrit contrib” > /etc/apt/sources.list.d/gerritforge.list’$ sudo apt-key adv –keyserver keyserver.ubuntu.com –recv-keys 1871F775$ sudo apt-get update -y$ sudo apt-get install -y gerrit

2 gerrit.conf:ポート変更とApache2対応

TCPポートを8080から8081へ、http://[ホスト名]/gerritでアクセスするようにします。

diff -uprN /var/gerrit/etc/gerrit.config{.org,}— /var/gerrit/etc/gerrit.config.org 2015-08-21 21:55:28.184000000 +0900+++ /var/gerrit/etc/gerrit.config 2015-08-21 20:31:58.212000000 +0900@@ -1,6 +1,6 @@ [gerrit] basePath = git- canonicalWebUrl = http://debian-8:8080/+ canonicalWebUrl = http://debian-8/gerrit [database] type = h2 database = db/ReviewDB@@ -13,7 +13,7 @@ [sshd] listenAddress = *:29418 [httpd]- listenUrl = http://*:8080/+ listenUrl = proxy-http://127.0.0.1:8081/gerrit [cache] directory = cache [container]

gerritを再起動します。

$ sudo /etc/init.d/gerrit restart

3 Apache2の設定

TCPポート8081のサービスをhttp://[ホスト名]/gerritでアクセスできるようにします。

URLのアクセスにダイジェスト認証を使います。

nocanonを付けないとpath/to/src.cのようにスラッシュを持つソースコードにアクセスできません。

$ sudo su -c ‘cat << EOF > /etc/apache2/mods-enabled/gerrit.confProxyPass /gerrit http://localhost:8081/gerrit nocanonProxyPassReverse /gerrit http://localhost:8081/gerrit nocanonProxyRequests Off<Proxy http://localhost:8081/gerrit> Order deny,allow Allow from all</Proxy><Location /login> AuthType Digest AuthName “gerrit” AuthUserFile /etc/apache2/.htdigest Require valid-user</Location>EOF’

VirtualHostディレクティブ内部でAllowEncodedSlashesをOnにします。gerritはスラッシュの代わりに%2Fを使うページがあります。

$ diff -uprN /etc/apache2/sites-available/000-default.conf{.org,}— /etc/apache2/sites-available/000-default.conf.org 2015-08-21 21:33:02.964000000 +0900+++ /etc/apache2/sites-available/000-default.conf 2015-08-21 20:36:18.876000000 +0900@@ -26,6 +26,8 @@ # following line enables the CGI configuration for this host # only # after it has been globally disabled with “a2disconf”. #Include conf-available/serve-cgi-bin.conf++ AllowEncodedSlashes On </VirtualHost> # vim: syntax=apache ts=4 sw=4 sts=4 sr noe

ダイジェスト認証のファイルを作成します。jenkinsからはssh経由でgerritにアクセスするので、ダイジェスト認証のファイルに追加する必要はありません。

$ sudo htdigest -c /etc/apache2/.htdigest “gerrit” hiroom2Adding password for hiroom2 in realm gerrit.New password: Re-type new password:

Apache2を再起動します。

$ sudo /etc/init.d/apache2 restart

4 ユーザ作成

http://[ホスト名]/gerritにアクセスし、ダイジェスト認証のパスワードを入力すると以下の画面が得られました。

https://dl-web.dropbox.com/s/st5f96nzz99epps/0001_Access-Page.png

右上の”Become”のリンクをクリックし、ユーザ登録画面に移動します。自分とjenkinsをユーザに追加します。

https://dl-web.dropbox.com/s/m5gm86frv1g7waf/0002_Register-User.png

ユーザの詳細な設定画面が表示されます。詳細な設定は後ほど変更することもできます。

https://dl-web.dropbox.com/s/dqbnruertuonm3c/0003_User-Detail.png

右上のSwitch Accountでユーザの切り替えを、Settingでフルネーム、SSH公開鍵ができます。

https://dl-web.dropbox.com/s/3wee5yggh4vsi8v/0004_User-Setting.png

フルネームを登録します。

https://dl-web.dropbox.com/s/ozi69gx79cueivh/0005_FullName.png

SSHの公開鍵を登録します。

https://dl-web.dropbox.com/s/uwfgfhlpm7cgmcd/0006_SSH-PublicKey.png

上記の画像はjenkinsのみでしたが、自分のアカウントも追加しております。

自分とjenkinsをAdministratorsグループに参加させる為、右上のSwitch Account経由で一度Administratorに変更します。

 

Administratorになったら、PeopleタブのList Groups画面を開きます。

ここでAdministratorsグループを選択します。

https://dl-web.dropbox.com/s/5sx8nwmpj82h8d7/0007_Administrators.png

自分とjenkinsの所属グループをAdministratorsグループに追加します。

https://dl-web.dropbox.com/s/yrwjex1fgsint86/0008_Addministrators-Add.png

5 ALl-Projectsにlabel “Verified”を追加

gerritではプロジェクトの雛形を用意しておき、新規にプロジェクトを作成する際に、雛形を継承することができます。

デフォルトとしてAll ProjectsとAll-Usersがあります。

今回はAll Projectsを利用します。

 

All Projectsからはlabel “Verified”が削除されており、CLI用のgerritコマンドの–verifiedオプションが使えません。

そこでlabel “Verified”を追加します。

ただし、副作用があり、Code Review +2ボタンが表示されなくなります。

 

Code-Reviewのスコアだけで運用する場合は追加不要です。

Jenkins Triggerプラグインは初期設定で–verifiedオプションを使いますが、こちらは後から削除可能です。

https://dl-web.dropbox.com/s/ejqmdqkrwzh2shk/0009_Projects-List.png

All-Projectsを選択し、Edit configボタンを押します。

https://dl-web.dropbox.com/s/6zd1aodj0fwhxoq/0010_Edit-Config.png

label “Verified”の設定を追加します。

$ cat 2be719d8.diff From 2be719d8ece0e0d7f1540ac6b52004fa0564221a Mon Sep 17 00:00:00 2001From: Administrator <[email protected]>Date: Sun, 23 Aug 2015 09:42:52 +0900Subject: [PATCH] Edit Project ConfigChange-Id: I2bc9c3bbf61c4ac22ec98293b822d4a89775ab8d—diff –git a/project.config b/project.configindex b636357..67cace7 100644— a/project.config+++ b/project.config@@ -27,6 +27,9 @@ label-Code-Review = -2..+2 group Administrators label-Code-Review = -2..+2 group Project Owners label-Code-Review = -1..+1 group Registered Users+ label-Verified = -1..+1 group Administrators+ label-Verified = -1..+1 group Project Owners+ label-Verified = -1..+1 group Registered Users submit = group Administrators submit = group Project Owners editTopicName = +force group Administrators@@ -39,6 +42,8 @@ push = group Project Owners label-Code-Review = -2..+2 group Administrators label-Code-Review = -2..+2 group Project Owners+ label-Verified = -1..+1 group Administrators+ label-Verified = -1..+1 group Project Owners submit = group Administrators submit = group Project Owners [access “refs/tags/*”]@@ -55,3 +60,8 @@ value = 0 No score value = +1 Looks good to me, but someone else must approve value = +2 Looks good to me, approved+[label “Verified”]+ function = MaxWithBlock+ value = -1 Fails+ value = 0 No score+ value = +1 Verified

https://dl-web.dropbox.com/s/1ban7yqzph1egrq/0011_label-Verified.png

Saveした後にColseするとAll-Projects設定の差分画面に移行します。

https://dl-web.dropbox.com/s/aqxd8ogieli95m2/0012_Submit.png

以下のボタンを押していくことで、設定が反映されます。

Publish Edit -> Publish -> Code Review +2 -> Submit

これ以降はCode-ReviewスコアとVerifiedスコアをつけないと変更が反映されないことになります。

5.1 Code-ReviewスコアとVerifiedスコア

Code-Reviewスコアはレビュー用のスコア、Verifiedスコアはテスト検証用のスコアです。VerifiedはJenkinsのGerrit Triger Pluginを用いてスコア値を反映させると良いでしょう。

6 プロジェクトの作成

ユーザを自分に変更します(プロジェクトのOwnerを自分にする為)。ProjectsタブのCreate New Project画面を開きます。All-Projecsを継承してプロジェクトを作成します。

https://dl-web.dropbox.com/s/hu6tf0niar959am/0013_Create-New-Project.png

7 既存のリポジトリをアップロード

SSH公開鍵で登録したユーザで既存のリポジトリをgerritにアップロードします。コミットのハッシュ値も一緒になります(Redmineで助かります)。

$ git clone –bare <path-to-orig-repo>$ cd <path-to-orig-repo>$ git push ssh://debian-8:29418/test.git *:*Counting objects: 6, done.Delta compression using up to 4 threads.Compressing objects: 100% (3/3), done.Writing objects: 100% (6/6), 525 bytes | 0 bytes/s, done.Total 6 (delta 0), reused 6 (delta 0)remote: Processing changes: refs: 1, done To ssh://debian-8:29418/test.git * [new branch] master -> master

8 gerrit.conf:認証をHTTPに変更(任意)

認証方法にDEVELOPMENT_BECOME_ANY_ACCOUNTは使うなとドキュメントに記載されているので、認証方法をHTTPに変更します。

OSSの場合はOpenID、LAN内の開発チームならばLDAPが良いと思いますが、今回はHTTPにしております。

HTTPの場合、ユーザの切り替えがダイジェスト認証任せになるので、ブラウザにパスワードを覚えさせるとユーザが固定されることになります。

diff -uprN /var/gerrit/etc/gerrit.config{.org,}— /var/gerrit/etc/gerrit.config.org 2015-08-21 23:28:53.576000000 +0900+++ /var/gerrit/etc/gerrit.config 2015-08-21 23:29:00.096000000 +0900@@ -7,7 +7,7 @@ [index] type = LUCENE [auth]- type = DEVELOPMENT_BECOME_ANY_ACCOUNT+ type = HTTP [sendemail] smtpServer = localhost [sshd]

gerritを再起動します。

$ sudo /etc/init.d/gerrit restart

Android | Linux | SDL - Narrow Escape