レポート

「第2回Jenkins勉強会」活動報告

この記事を読むのに必要な時間:およそ 3.5 分

Jenkins+Maven活用術

グルージェント所属の岡本氏からは,氏がメインで使っているMavenと,Mavenに関連するJenkinsの活用について発表していただきました。

画像

まず,Mavenで各環境に応じて設定を切り替える方法について,デモを交えた説明がありました。実際の開発プロジェクトでは本番環境やステージング環境に応じて,ログ設定やデータベース接続先の設定などを切り替える必要がありますが,この環境に応じた設定をMavenのプロファイルを用いて切り替えるというやり方です。また,カバレッジツールであるEmmaのMaven/Jenkinsプラグインを利用して,Maven実行時に1つオプションを追加するだけでコードカバレッジを取得する方法が紹介されました。

JenkinsのようなCIツールを効果的に使用するには,開発者のローカル環境とは別にCI環境でもビルドを行えるように設定する必要があります。その点を考慮しても,環境ごとに設定内容を切り替えるという考え方は重要です。

JenkinsエンジニアのためのGroovy入門

前回の勉強会でLT発表をしていただいた奥氏からは,GroovyとJenkinsの連携についての発表です。

最初に,Javaで記述されたソースコードをGroovyに変換していく流れを通して,Groovyについて簡単な説明がありました。続いてGroovyとJenkinsの連携に関して,GroovyでJenkinsを管理する方法と,Jenkins上でGroovyを実行する方法の2通りの方法が紹介されました。GroovyでJenkinsを管理する方法としてブラウザ上から実行できるスクリプトコンソールやコマンドラインインターフェースを備えたJenkins CLIが,Jenkins上でGroovyを実行する方法としてGroovy Pluginがデモを交えながら説明されました。

Jenkins内部でGroovyが用いられていることもあり,GroovyとJenkinsの相性は他の言語よりよいものとなっています。Groovyをうまく活用することによって,Jenkinsをより一層効率的に使えるでしょう。

脅迫

LT発表の1人目は,TracLigntningの作者であるOかもと氏です。

TracLightningにはJenkinsが同梱されておりインストールするとすぐに使用できるのですが,実は作成当初のCIツールにはApache Continuumが採用されていました。川口氏からの要請を受けてContinuumからJenkinsへ移行したとのことですが,そのときの経緯をOかもと氏独特のユーモアを交えた語りで説明していただきました。

開発環境を構成する要素として,CIツールやBTSが有用なことは広く認識されてきています。TracLightningのように,それらをまとめて提供するツールをうまく活用することで,より効率的に開発環境を構築できることでしょう。

Jenkins+Play!で気軽にCI!

シャノン所属の池田氏からは,Play FrameworkでのCI事情とそれに関するJenkinsプラグインについてお話いただきました。

Play Frameworkに備わっているテスト機構では,Jenkins上でテストを実行しても結果が視覚的に分かりづらいことが欠点とのことでした。これは,テストの実行結果が独自のHTMLフォーマットで出力されるため,Jenkinsがテスト結果を解釈できないからです。そこで池田氏は,テスト結果をJenkins上で視覚的に表示するプラグインを開発することによって,この欠点を解消しようと試みたそうです。

残念ながら5分の時間内に収まらずプラグインの説明まではできなかったのですが,Play Frameworkと本発表に興味をお持ちの方も会場内には多かったようです。懇親会参加者に勉強会の感想を聞いたところ,池田氏の発表を最後まで聞きたかったという意見も多くあがりました。

プラグイン活用のススメ

続いては,Jenkinsプラグインの日本語化を積極的に進めているtyuki39氏の発表です。

tyuki39氏からは,FindBugsやCheckstyleといったJava開発時に有用なプラグインをピックアップして紹介していただきました。また,上記で取り上げたプラグインを一括でインストール・初期設定を行うGantスクリプトを作成して検証されたようです。

Jenkinsの特徴の一つは豊富なプラグインにありますが,Jenkinsを初めて導入する方にとってはプラグインが多すぎて逆に判断できないという声もあります。そのような方にとって,tyuki39氏の発表はJenkins導入の手助けとなるでしょう。

JenkinsのSlave事情

ハピルス株式会社代表の藤川氏からは,Jenkinsのスレーブに関連した発表を行ってもらいました。

まず,スレーブ構築時のはまりどころとして,実行コマンドのパスなど環境が異なっている場合やセキュリティ関連に注意すべきということが説明されました。続いてINTEROP 2010のクラウドコンピューティングコンペティションでDeNA賞を受賞した,Hadoopと組み合わせてJenkinsスレーブを100台以上に自動拡張するという事例が紹介されました。

藤川氏の発表の通り,Jenkinsでは様々な方法で容易にスレーブを構築できます。マスターとなるマシンに負荷がかかり過ぎている場合や複数の異なるビルド環境を用意する必要がある場合など,Jenkinsを本格的に運用される方はスレーブを用意することも検討してはいかがでしょうか。

Jenkinsでリグレッションを起こす方法

最後は,山本氏からJenkins利用時のリグレッションに関する考察を話していただきました。

山本氏が携わっているTwitter4Jの開発では,Twitter APIの仕様変更に伴った修正の際にリグレッションを起こしてしまったそうです。その反省を踏まえて,どのビルドからテストが失敗したのかも合わせてテスト結果を確認する,実行済みテストケース数やコードカバレッジの遷移から不吉な兆候を検出するといった点を意識し始めたということでした。

Jenkinsでは過去のビルド情報を保存しておくことにより,テスト結果やカバレッジの遷移を時系列なデータとして表示することができます。この時系列データを分析することで,単独のビルド結果だけでは分からないプロジェクト全体の傾向を把握することができるでしょう。

最後に

詳細はまだ未定ですが,次回Jenkins勉強会は5月頃を予定してます。今回はJavaプロジェクトでの事例をテーマに取り上げましたが,次回からは「LL言語でのJenkins運用事例」「Jenkinsプラグインの開発」⁠初心者のためのJenkins導入講座」といったテーマでの開催も考えています。

皆様からの意見も取り入れていきたいので,本勉強会で取り上げてもらいたい内容をお持ちの方はメーリングリストに参加して投稿していただければ幸いです。

著者プロフィール

中村知成(なかむらともなり)

株式会社ヌーラボ所属。日本Jenkinsユーザ会では,イベントの運営面を主に担当。

前職で課題管理・構成管理といった開発環境の整備に面白さを感じ,BacklogというBTSを提供しているヌーラボに転職。一人前のビルド職人になるべく日々奮闘中。最近は,開発環境を強化するツールとしてのGroovyに注目している。

Twitter:@ikikko
ブログ:http://d.hatena.ne.jp/ikikko/