gerrit trigger...

Post on 15-Jan-2015

4.711 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

Gerrit Trigger Pluginを使ってJenkins

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

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

太田 健一郎 @oota_ken

目次

自己紹介

書籍「入門Jenkins」の紹介

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

Jenkinsによる自動レビュー

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

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

自己紹介

経歴 社内まったりツール開発 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割

Java以外でのJenkinsの活用

Jenkinsの活用の定番は

JavaEE

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

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

iOS

Android

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

Ruby on Rails

Catalyst

Node.js

JQuery

Java以外でのJenkinsの活用

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

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

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

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

Androidでの活用

Gerrit連携

Ruby on Rails

Catalyst

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

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

題材

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

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

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

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

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

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

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

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

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

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

修正漏れが起きやすい

修正確認がしにくい

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

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

Jenkinsによる自動レビュー

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

基本

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

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

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

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

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

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

Gerrit

Google製のレビューシステム

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

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

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

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

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

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

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

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

Gerrit概念図

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

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

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

Gerritデモ

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

プログラム

average

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

Junitテスト付き

環境

All in One Eclipse

EGit

Gerrit

Ubuntuの仮想マシン上

Gerrit + Jenkins

Gerrit単体

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

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

Gerrit + Jenkins

Gerrit Trigger Plugin

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

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

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

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

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

Gerrit Trigger Pluginのイメージ

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

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

Gerrit Trriger Plugin活用デモ

プログラム

StringUtilities.isBlank (空白判定)

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

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

Gerritレビュー

Verified – 自動

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

Code Review – 自動

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

Code Review – 手動

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

Gerrit + Jenkinsのメリット

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

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

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

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

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

まとめ

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

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

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

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

top related