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