オリジナル: Meet Jenkins
Jenkinsとは?
Jenkinsは、ソフトウェアのビルドやcronで起動するジョブなどの繰り返しのジョブの実行を監視します。これらのうち、Jenkinsは現在次の2つのジョブに重点を置いています。
- 継続的な、ソフトウェアプロジェクトのビルドとテスト: つまり、CruiseControlやDamageControlが行うこと。 一言で言えば、Jenkinsは、容易ないわゆる「継続インテグレーションシステム」を提供し、開発者が変更をプロジェクトに統合でき、ユーザーがより新しいビルドを容易に取得できるようにします。自動化された継続的なビルドは、生産性を向上させます。
- 外部で起動するジョブの実行監視: cronによるジョブやprocmailのジョブで、リモートマシンで動作するものも含みます。例えばcronについて言えば、出力をキャプチャーした定期的なメールだけ受信し、こつこつとそれを見ます。おかしくなっていることに気がつくかどうかは、すべてあなた次第です。Jenkinsは出力を保存し、 いつおかしくなったのか容易に把握することができるようになります。
特徴
Jenkinsの特徴は次の通りです。
- 簡易なインストール:
java -jar jenkins.war
を実行するか、サーブレットコンテナにデプロイします。追加のインストールも、データベースも不要です。 - 簡易な設定: 豊富な入力時のエラーチェックとヘルプを備えたわかりやすいWebGUIを使用して、Jenkinsを設定できます。もう手でXMLをいじる必要はありません。いじりたいのならそうすることもできますが。
- 差分のサポート: Jenkinsは、CVSやSubversionからビルドへの変更の一覧を生成することができます。これは、リポジトリの負荷を削減するとても効率的な方法で行われます。
- 永続リンク: どこからでも簡単にリンクできるように、"最新のビルド"や"最新の安定ビルド"のような永続(固定)リンクを含む、多くの画面は、クリーンでわかりやすいURLを持ちます。
- RSS/Eメール/IM との連携: 失敗時にリアルタイムに通知をうけるために、RSSやEメールでビルド結果を監視します。
- ビルド後のタグ: ビルドが完了した後に、ビルドにタグを付与できます。
- JUnit/TestNGによるテスト結果のレポート: JUnitのテスト結果を、一覧表示および要約し、いつから失敗しているのかなどの履歴情報とともに表示します。履歴の傾向はグラフ化されます。
- 分散ビルド: Jenkinsは、複数のコンピュータで分散ビルド/テストを実行できます。このおかげで、開発者の机の下に横たわっている何もしていないワークステーションを利用することができます。
- ファイル指紋: Jenkinsは、どのビルドがどのjarを生成したのか、どのビルドがjarのどのバージョンを使用しているのか等々、追跡できます。この機能は、Jenkinsが管理しないjarでも機能します。そして、プロジェクトの依存性を管理するのにも有用です。
- プラグインサポート: Jenkinsをサードパーティのプラグインで拡張できます。 開発チームが使用するツールや処理をサポートするプラグインを書くこともできます。
紹介記事
- http://linsolas.developpez.com/articles/hudson/ (フランス語)
- http://www.slideshare.net/carlo.bonamico/continuous-integration-with-hudson/
- 川口さんによるFOSDEM 2008でのHudsonのプレゼンテーション (ビデオ)
- Jenkinsの導入 (フランス語)
- 川口さんによる導入とベストプラクティス (日本語)
- cactusmanさんによる頼れる執事Jenkins
- cactusmanさんによる頼れる執事があなたをサポート
- InfoQ: JenkinsとFindBugsを用いた継続的インテグレーションとコードインスペクション
テストドライブ
Java Web StartでJenkinsを起動します。
起動後、http://localhost:8080/ にアクセスすると、ダッシュボードが表示されます。このJenkinsに加えた変更は、~/.jenkinsに保存されますので、Jenkinsを再起動しても設定は残ります。
インストール
Jenkinsを実行するには、最低でもJ2SE 1.5以降が必要です。jenkins.warをダウンロード後、java -jar jenkins.war
を実行すると起動します。 これは、基本的にテストドライブと同様のセットアップですが、出力はウィンドウではなくコンソールに出力されます。
もう1つの方法として、Glassfish、Tomcat 5、JBossおよびJettyなどのServlet 2.4/JSP 2.0をサポートするサーブレットコンテナがあるなら、他のWARファイルと同様に jenkins.war
をデプロイすることもできます。
コンテナごとのインストール方法については、 このドキュメント を参照してください。
Windows上で動かしているなら、ログインすることなく自動的に起動するように、Jenkinsをサービスとして起動したいこともあるでしょう。1つの方法として、まずTomcatをサービスとしてインストールしてから、Jenkinsをデプロイする方法があります。別の方法として、Java Service Wrapperを使用する方法もあります。しかしながら、それには問題があります。というのも、Jenkinsのデフォルトの名前空間でのメインクラスが、サービスラッパーのメインクラスと競合してしまうからです。(TomcatやJettyなど)コンテナにデプロイする方が、コンテナに不慣れな開発者であっても、おそらく容易です。
また、他の人がどのようにJenkinsをデプロイしているか参照して、どうしたらあなたの環境を上手く構築できるか考えてみてください。