Gerritの構築方法と使い方


Gerritとは

Gerritとは無料のブラウザベースで使えるコードレビューツールです。主にソフトウェアのアジャイル開発を行う目的で利用されます。チームでソフトウェア開発を進める際に、ソースコードの変更をお互いにレビューし合い、レビューを通過したものだけを開発中のコードにマージすることができます。Gitを使って、開発しているソースコードのクローンや変更の提出などを行います。また、Jenkinsと連携させることで提出したコードの自動検証も可能です。Gerritの構築方法と簡単な使い方を紹介します。

Gerritの構築

Gerritはサーバー上で構築し、ブラウザからアクセスして使用します。構築の方法は公式ページにもいくつか書いてあります。その中でもDockerを使った構築方法が最も簡単でした。

sudo docker run -d -p 8080:8080 -p 29418:29418 gerritforge/gerrit-ubuntu15.04
sudo docker ps
CONTAINER ID        IMAGE                            COMMAND                  CREATED             STATUS              PORTS                                              NAMES
bdaf2ac5560f        gerritforge/gerrit-ubuntu15.04   "/bin/sh -c '/var/ge…"   5 minutes ago       Up 5 minutes        0.0.0.0:8080->8080/tcp, 0.0.0.0:29418->29418/tcp   pedantic_ardinghelli

ブラウザで0.0.0.0:8080を開けるようになります。

次に、sshでGerritに接続できるようにします。

ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub

catで出力された公開鍵をGerritのブラウザから登録します。
Account>Settings>SSH Public Keysの場所から登録します。
その後以下のコマンドで、ssh接続ができることを確認します。

ssh admin@localhost -p 29418
  ****    Welcome to Gerrit Code Review    ****

  Hi Administrator, you have successfully connected over SSH.

  Unfortunately, interactive shells are disabled.
  To clone a hosted Git repository, use:

  git clone ssh://admin@25680d00e8b3:29418/REPOSITORY_NAME.git

Connection to localhost closed.

次に、練習として、testプロジェクトを作成して修正をコミットする手順を示します。

ssh -p 29418 admin@localhost gerrit create-project --empty-commit test

testというプロジェクトが作成されました。

testというプロジェクトに変更点を提出していきます。

git clone ssh://admin@localhost:29418/test
cd test

scp -p -P 29418 admin@localhost:hooks/commit-msg .git/hooks/

echo 'test' > test.txt
git add test.txt
git commit -m "test commit"
git push ssh://admin@localhost:29418/test  HEAD:refs/for/master

3行目のscp ・・・というコマンドは、コミットに自動でIDを付与するために必要です。IDが付与されていないと変更点の提出ができないことがあります。
下の画像の通り、変更点が提出されました。

Gerritで変更点の提出までの流れ

現在開発中のリポジトリのクローンと、Gerritへの変更点の提出までの手順を書きます。

git clone ssh://admin@localhost:29418/test
cd test
git checkout -b myBranch

ソースコードに変更を加えます。JIRAとGerritの連携機能を使っているのであればJIRAの課題管理IDをコミットメッセージに記載します。

git add .
git commit -m "[JIRA issue ID] commit message"

最後に、Gerrit上のリモートリポジトリと同期し、git reviewによりソースコードの修正を提出します。

git checkout master
git pull --ff-only origin master
git checkout myBranch
git rebase -i master
git review

提出内容の修正方法

提出した変更内容を修正したい場合の手順を示します。

git review -d [変更番号]
git checkout review/[提出者名]/[ブランチ名]

ソースコードを修正します。

git add .
git commit --amend
git review