Gerrit trigger...

19
Gerrit Trigger Pluginを使ってJenkins Gerritのレビューアにしてみよう 6Jenkins勉強会 2012/10/19 太田 健一郎 @oota_ken
  • Upload

    -
  • Category

    Documents

  • view

    4.711
  • download

    1

description

第6回Jenkins勉強会の発表資料です。

Transcript of Gerrit trigger...

Page 1: Gerrit trigger pluginを使ってjenkinsをコードレビューシステムgerritのレビューアーにしてみよう

Gerrit Trigger Pluginを使ってJenkins

をGerritのレビューアにしてみよう

第6回Jenkins勉強会 2012/10/19

太田 健一郎 @oota_ken

Page 2: Gerrit trigger pluginを使ってjenkinsをコードレビューシステムgerritのレビューアーにしてみよう

目次

自己紹介

書籍「入門Jenkins」の紹介

エンタープライズ開発でありがちなレビュー

Jenkinsによる自動レビュー

Gerritによる手動レビューのワークフロー自動化

Gerrit + Jenkins ~Jenkinsをレビューアに~

Page 3: Gerrit trigger pluginを使ってjenkinsをコードレビューシステムgerritのレビューアーにしてみよう

自己紹介

経歴 社内まったりツール開発 5.5年 (JavaScript & Perl) お客様デスマソルジャーSE 4年 (主にJava、一部COBOL) ソーシャルゲームQA 1.5年 (再び、JavaScript & Perl)

QAっていうけど、品質に関わることはほぼ何でもやります>< 最近だと、Jenkinsの周り以外にも

JIRAの管理人 Gitブランチ管理設計 ゲームエンジン新バージョン検証 新端末検証 (Android & iOS) メモリリーク対応&テクスチャバッファ最適化 チート対応

言語 RubyとかF#が好きだけど 仕事では、

シェルスクリプト 8割 Perl 1割 JavaScript 1割

Page 4: Gerrit trigger pluginを使ってjenkinsをコードレビューシステムgerritのレビューアーにしてみよう

Java以外でのJenkinsの活用

Jenkinsの活用の定番は

JavaEE

だけど、現在はもっと色々なところで使われている

スマートフォンクライアントアプリ開発

iOS

Android

LLを使ったWebアプリ開発 (クライアント&サーバー)

Ruby on Rails

Catalyst

Node.js

JQuery

Page 5: Gerrit trigger pluginを使ってjenkinsをコードレビューシステムgerritのレビューアーにしてみよう

Java以外でのJenkinsの活用

ですが、情報が散在していてまとまったものがない

ので、4人で本を書きました

入門Jenkins – 実践「継続的インテグレーション」

入門という題ですが、全然入門じゃなくてマニアック

Androidでの活用

Gerrit連携

Ruby on Rails

Catalyst

Page 6: Gerrit trigger pluginを使ってjenkinsをコードレビューシステムgerritのレビューアーにしてみよう

Jenkinsを自動レビューアにしてみよう

本日は本の中から、Gerrit連携をお話します

題材

ただし、普通に本の紹介をしても面白くないので

よくあるSIでのレビューを効率化するために

JenkinsをGerritの自動レビューアとして活用してみます

Page 7: Gerrit trigger pluginを使ってjenkinsをコードレビューシステムgerritのレビューアーにしてみよう

エンタープライズ開発でありがちなレビュー

第三者の専門チームがあるバージョンの断面を手作業でレビュー

開発側ではCIっぽいことはしていたりすることが多い

Page 8: Gerrit trigger pluginを使ってjenkinsをコードレビューシステムgerritのレビューアーにしてみよう

先ほどのレビューの問題点

断面に対して、一気にレビューをして、返却するため

戻ってきたときには既にコードベースが進んでいる

最新版に対する修正のワークロードが掛かる

修正漏れが起きやすい

修正確認がしにくい

CIによる自動レビューと専門家による手作業のレビューが分断してしまっている

手作業のレビューが完了基準になりにくい

Page 9: Gerrit trigger pluginを使ってjenkinsをコードレビューシステムgerritのレビューアーにしてみよう

Jenkinsによる自動レビュー

コードインスペクションツール

基本

開発者の各環境で実行、修正する

テストに組み込んでしまう方法もある

Jenkins上のコードインスペクションジョブ

全体のコードの品質の傾向を多角的に見るために使用する

各種メトリックスツールを併用する

Jenkins上で実行しているだけは直してもらいにくい

Page 10: Gerrit trigger pluginを使ってjenkinsをコードレビューシステムgerritのレビューアーにしてみよう

Gerrit

Google製のレビューシステム

http://code.google.com/p/gerrit/

Gitをリポジトリとして使用する

レビューのワークフローを自動化する

ロール、権限を細かく制御できる

レビュー、検証、却下のワークフローを自動化する

開発ブランチへのコミットに対してレビュープロセスを必須にできる

とか色々あるけど、結構とっつきにくい><

詳しくは「入門Jenkins」をご覧下さい

Page 11: Gerrit trigger pluginを使ってjenkinsをコードレビューシステムgerritのレビューアーにしてみよう

Gerrit概念図

各開発者はレビューに合格したコミットのみ取得可能

Page 12: Gerrit trigger pluginを使ってjenkinsをコードレビューシステムgerritのレビューアーにしてみよう

Gerritのワークフロー フローチャート

Page 13: Gerrit trigger pluginを使ってjenkinsをコードレビューシステムgerritのレビューアーにしてみよう

Gerritのワークフロー シーケンス図

Page 14: Gerrit trigger pluginを使ってjenkinsをコードレビューシステムgerritのレビューアーにしてみよう

Gerritデモ

簡単なプログラムでGerritのデモをします

プログラム

average

Doubleの配列の平均値を求めるクラスとメソッド

Junitテスト付き

環境

All in One Eclipse

EGit

Gerrit

Ubuntuの仮想マシン上

Page 15: Gerrit trigger pluginを使ってjenkinsをコードレビューシステムgerritのレビューアーにしてみよう

Gerrit + Jenkins

Gerrit単体

レビューのワークフローは自動化してくれる

しかし、Verified, Code Reviewとも手作業です

Gerrit + Jenkins

Gerrit Trigger Plugin

GerritへのコミットをJenkinsがフックする

ジョブの結果によってVerified, Code Reviewの投票ができる

ユニットテストのジョブが成功したら、Verified +1

コードインスペクションのジョブが成功したら、Code Review +1

Gerritのワークフロー後ではなく、レビュー前のコミットにフックできるところが味噌

Page 16: Gerrit trigger pluginを使ってjenkinsをコードレビューシステムgerritのレビューアーにしてみよう

Gerrit Trigger Pluginのイメージ

Gerrit Trigger Pluginを使えば、レビュー前のコードをJenkinsでチェックできる

通常のJenkinsだとレビューし終わったコードをCIする

Page 17: Gerrit trigger pluginを使ってjenkinsをコードレビューシステムgerritのレビューアーにしてみよう

Gerrit Trriger Plugin活用デモ

プログラム

StringUtilities.isBlank (空白判定)

ユニットテストは合格している

実装にStringを”==“で判定している問題がある (FindBugsで検出可)

Gerritレビュー

Verified – 自動

Jenkinsのユニットテストジョブで成功すれば+1、失敗すれば-1

Code Review – 自動

JenkinsのFindBugsジョブで全合格なら+1、違反があれば-1

Code Review – 手動

JenkinsのジョブがVerifiedとCode Reviewを判定した後に人が最終判定

Page 18: Gerrit trigger pluginを使ってjenkinsをコードレビューシステムgerritのレビューアーにしてみよう

Gerrit + Jenkinsのメリット

手動のレビューの開始基準を自動テストの自動レビューにすることが簡単にできる 自動テストやコードインスペクションを通っていないガッカリなコードをレビューすることを減らせる

レビューアが本来集中すべき、ツールでチェックできないバグに注力できる

CIが組み込まれるため、レビューのフィードバックが細かくできる

いざというときは、テストや自動レビューが合格しなくても、ワークフローを進め、本番へマージできる

躾として、開発者側でコードインスペクションツールを常に掛けるようになる

Page 19: Gerrit trigger pluginを使ってjenkinsをコードレビューシステムgerritのレビューアーにしてみよう

まとめ

Gerrit自体は少々取っつきにくいところもありますが、

エンタープライズ開発で必要となる厳密なレビュープロセスを効率化したい場合、非常に有用なので、是非導入を検討してみて下さい

体験と導入は「入門Jenkins」の第6章でも扱っているので、是非ご購入いただけると幸いです (宣伝)

本日の参加者の中から三名にじゃんけんで「入門Jenkins」をプレゼントします!!