ユカイ、ツーカイ、カイハツ環境!(21)
「Hudson」改め「Jenkins」で始めるCI
(継続的インテグレーション)入門
岡本 隆史
2011/4/7
CIツール「Hudson」改め「Jenkins」とは
「Jenkins」とは、CI(継続的インテグレーション)ツールとして有名な「Hudson」の開発者たちにより開発されているCIツールです。Hudsonは商標上などの問題によりJenkinsと名前を変えて継続することが発表されたので、記憶に残っている方も多いと思います。現在では落ち着いて開発されているようです。
本稿では、今話題のJenkinsの使い方を紹介します。本記事の想定読者は、Java開発を行っている方で、「今までCIを導入していなかったけどこれから導入しよう」「Jenkins(Hudson)は使えそうだけど、難しそうだなぁ」と思っている方を対象としています。本稿を読めば、10分程度でJenkinsを実際に動かして体験できます。最後にも述べますが、もちろん、Java開発以外でも活用できます。
日本Jenkinsユーザー会 via kwout
開発を楽に楽しくする「Jenkins」の4つの主な特徴
Jenkinsを導入することにより、どのようなことができるようになるのしょうか? Jenkinsの特徴を見ていきましょう。
■ 【1】ソースコードの統合・テストの自動化
Jenkinsを利用すると、ソースコードを統合してビルドを自動化できます。人手でコンパイルやデプロイ、テストを行うと、手順漏れが発生したり、統合/テストできる人が特定の人に限られることがありますが、ビルドを自動化しておけば誰でも簡単にビルドできるようになります。
ビルドには、Java開発では、AntやMavenの他、独自のビルドスクリプトやツールも扱えます。
最近では仮想マシン上でテスト環境を構築してテストするケースも増えてきていますが、仮想マシン用のプラグインを導入すれば、仮想マシンを起動し、その上にテスト環境の構築&テストといったことさえできるようになります。
■ 【2】定期的なビルドによるコンパイルエラー、バグの早期発見
複数の開発者でソフトウェアの開発を進めていると、開発者間でインターフェイスの意識違いが発生し、互いの実装するインターフェイスが不整合なまま開発が進んだり、重大なバグを埋め込んだまま開発が進み、後で手戻りが発生することがあります。
定期的にソースコードを統合、ビルドしコンパイルエラーを発見することにより、ソースコードをきれいな状態に保てます。
■ 【3】メトリクスの自動取得
コードチェックやカバレッジを取得するプラグインを導入すれば、ビルドごとのコードの統計を見ることができます。
静的チェックの警告が増えてきたので、静的コード解析ツールの利用を徹底したり、カバレッジが下がってきたのでテストコードを強化したり、コードの複雑度が上がってきたのでリファクタリングして保守性を高めたりと、ソースコードの品質管理に役立ちます。
■ 【4】開発を楽しく、ユカイツーカイに
Jenkinsで使えるのは、業務に役立つ有用なプラグインだけではありません。導入して何かが楽になるわけではなくても、開発を楽しくするようなプラグインが提供されています。
例えば、ビルド完了時の背景が変えることができる「Persona」プラグインなどが提供されています。Personaプラグインを利用して、ビルドが失敗したときに部長の怒った顔が表示されたり、成功したときに憧れの派遣のおねーさん(もしくはイケメン社員)を表示するようにしておけば、開発が盛り上がること間違いないでしょう(ただし、社員や協力会社セクハラ行為には注意してください。Jenkinsはオープンソースなので、その辺りは自己責任で……)。
他にも、iPhoneやAndroid用のクライアント、Googleカレンダーとの連携、Twitterとの連携など実に多種多彩なプラグインがあります。
Jenkinsは、プラグイン・アーキテクチャを採用しており、たくさんのプラグインが提供されています。プラグインを利用することにより、さまざまな機能を追加できるようになっています。
上記は、Jenkins単体ではなく、プラグインと組み合わせたときの特徴です。プラグイン・アーキテクチャにより、従来の継続的インテグレーションツールに比べ、より高度なことができるようになっています。
Java開発におけるJenkinsの利用パターン
Jenkinsの特徴を理解できたところで、実際にJenkinsをJava開発で利用する際の利用パターンを見ていきましょう。Java開発で利用する際のスタンダードな活用方法を図1に示します。
図1 Jenkinsの利用フロー |
開発者がリポジトリにコミット、あるいは1時間ごとなどソースコードをビルドする契機を決めておきます。開発者がリポジトリにコミットしたコードをJenkinsが取得し、ビルドやテスト、レポート作成を行います。コード分析、カバレッジの結果を出力するようにしておけば、ビルドごとのコード分析やカバレッジの結果をグラフで見ることができます。
ビルド結果やレポートを見ることにより、正しくビルドされているかどうか、テストがパスしているかどうか、規約通りにコードが記述されているかどうか、バグが存在する可能性のあるコードが含まれていないかどうかをチェックできます。
ある程度の規模の開発では、システムに対し複数のJavaプロジェクトを用いて開発することが多いですが、プロジェクト間の依存関係を定義しておけば、依存するプロジェクトがビルドされたときに自動的にビルドを行うようなことも可能です。
次ページでは、実際にJenkinsを使ってみましょう。
Index | ||||||||||
|
ユカイ、ツーカイ、カイハツ環境! バックナンバー 連載インデックスへ»
- 第1回 Trac Lightningで始めるチケット式開発「電撃」入門
- 第2回 SubversionとTracでファイル管理の“迷宮”から脱出
- 第3回 分散バージョン管理Git/Mercurial/Bazaar徹底比較
- 第4回 Aptanaなら開発環境とクラウドの連携が超お手軽!
- 第5回 App Engine/AptanaなどJavaクラウド4つを徹底比較
- 第6回 Eclipse 3.5 Galileoの「実に面白い」新機能とは
- 第7回 ブラウザを選ばずWebテストを自動化するSelenium
- 第8回 JUnit/FindBugs/PMDなどを総観できるQALab/Limy
- 第9回 Googlerも使っているIntelliJ IDEAのOSS版を試す
- 第10回 Webのバグを燃やしまくるFirebugと、そのアドオン7選
- 第11回 DB設計の神ツール「ERMaster」なら、ここまでできる
- 第12回 AWS ToolkitでTomcatクラスタをEC2上に楽々構築
- 第13回 究極の問題解析ツール、逆コンパイラJD-Eclipseとは
- 第14回 AzureのストレージをJavaで扱えるWindowsAzure4j
- 第15回 Java EE 6/Tomcat 7/Gitに対応したEclipse 3.6
- 第16回 単体テストを“神速”化するQuick JUnitとMockito
- 第17回 コード探知機「Sonar」でプロジェクトの深海を探れ!
- 第18回 Team Foundation ServerでJava開発は大丈夫か?
- 第19回 Review Boardならコードレビューを効率良くできる!
- 第20回 Bazaarでござ〜る。猿でもできる分散バージョン管理
- 第21回 「Hudson」改め「Jenkins」で始めるCI入門
Java Solution全記事一覧 |
- 「Hudson」改め「Jenkins」で始めるCI入門 (2011/4/7)
これから継続的インテグレーションを始める方を対象に10分程度でJenkinsを実際に動かして体験できるように使い方や特徴を解説 - Javaで覚えるIT技術者の40の常識 (2011/3/24)
Java関連ソフトウェアのサンプルコードや使い方を通じて多彩な常識的な基礎知識を学習する記事のカテゴリ分けリンク集 - 7ステップで理解するJavaでの列挙型/enum使用法 (2011/3/3)
あらかじめ要素数が分かっている定数の集合を列挙して使うのに便利な列挙型の使い方を順を追って徹底解説します - Bazaarでござ〜る。猿でもできる分散バージョン管理 (2011/2/16)
「SubversionやCVSは使っているがGitなど分散型は難しい」という人にお勧めのBazaar。その特徴や使い方を徹底解説します
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
- - PR -