連載
» 2011年04月07日 00時00分 UPDATE

ユカイ、ツーカイ、カイハツ環境!(21):「Hudson」改め「Jenkins」で始めるCI(継続的インテグレーション)入門 (3/4)

[岡本隆史,@IT]

ビルド結果の確認

 ビルド結果の画面では、テスト結果やコンソールのログを見ることができます。ビルドが失敗した場合は、コンソールログからビルドの結果を確認します。

図5 ビルド結果 図5 ビルド結果

 テストの結果を見ると、テストが1件失敗しており、失敗したテストはSampleLibTestクラスのpythonTestメソッドだということが分かります。テスト結果をクリックするとテストの結果を確認できます。

 また、左の[コンソール出力]からビルド時のコンソールの出力を確認できます。ビルドが失敗した場合は、コンソール出力からビルドの失敗原因を調査します。

コードの修正と再ビルド

 コードを修正して再ビルドしてみましょう。まず、ビルド結果の画面「org.ultimania.SampleLibTest.pythonTest」からテスト結果をクリックして確認すると、下記のようになっています。

java.lang.AssertionError: expected: but was:
    at org.junit.Assert.fail(Assert.java:91)
    at org.junit.Assert.failNotEquals(Assert.java:645)
    at org.junit.Assert.assertEquals(Assert.java:126)
    at org.junit.Assert.assertEquals(Assert.java:145)
    at org.ultimania.SampleLibTest.pythonTest(SampleLibTest.java:45)

 LibraryProjectのSubversionのリポジトリは「http://localhost/svn/SampleProject/LibraryProject/trunk」です。EclipseやSubversionクライアントなどでチェックアウトし、SampleLibTest#pythonTestメソッドを確認してみましょう。

42    @Test
43    public void pythonTest() {
44        SampleLib lib = new SampleLib();
45        assertEquals(lib.detectLangType("python"), LangType.PYTHON);
46    }

 SampleLibクラスのdetectLangTypeメソッドの動作がおかしいようです。

 続いて、SampleLib.javaを開いてdetectLangTypeメソッドを見てみましょう。

:
【略】
:
    public LangType detectLangType(String langType) {
:
【略】
:
        } else if (langType.equals("pyhon")) {
            System.out.println("Pythonが選択されました");
            return LangType.PYTHON;
        } else if (langType.equals("perl")) {
:
【略】
:
    }

 どうやら、「python」を「pyhon」と記述してしまったため、エラーになっているようです。「pyhon」を「python」と修正・コミットしてもう一度JenkinsでLibraryProjectをビルドしてみましょう。

図6 コード修正後のビルド結果 図6 コード修正後のビルド結果(画像をクリックすると、拡大します)

 ビルドが終了すると、先ほど黄色だったランプが青に変わっているのが確認できます。

 また、LibraryProjectのジョブのページを確認すると、テストが成功するのに合わせて、テスト結果やコードカバレッジの推移が変化しているのが分かります。

図7 修正後のジョブのページ 図7 修正後のジョブのページ(画像をクリックすると、拡大します)

さらにJenkinsを便利にする3つの実践テク

 さて、Trac Lightningのサンプルで一通りJenkinsの使い方を理解したところで、ビルドの自動化、メール送信の設定や、Windowsサービスとしてインストールするなど、より実践的な使い方を見ていきましょう。

【1】ビルドを自動化するには

 Jenkinsには、スケジューラによる定期的なビルドの実行と、コミットを検出して更新があったときにビルドをする機能を持っています。ここでは、定期的にバージョン管理システムSCM)をポーリングして、リポジトリにコミットがあったときにビルドを行う設定をしてみましょう。

図8 ビルド自動化の設定 図8 ビルド自動化の設定(画像をクリックすると、拡大します)

 ジョブの左のメニューから[設定]を選びます(【1】)。設定画面の下の方にある[ビルド・トリガ]を設定することによりビルドの契機を設定できます。[SCMをポーリング]をチェックすると、リポジトリへコミットがあったときにビルドします。

 また、[定期的に実行]をチェックすると、指定した時刻にビルドできます。SCMは、ソースコードマネジメント(Source Code Management)の略でバージョン管理システムと同義です。

 ここでは、バージョン管理システムをポーリングする設定を行うので、LibraryProjectのジョブの画面の[ビルド・トリガ]の[SCMをポーリング]にチェックを入れます(【2】)。すると、スケジュールというテキストエリアが表示されますが、何を入力したら良いのか分かりません。そのような場合は、入力欄の右にある「?」マークをクリック(【3】)すると、その下に入力項目の説明が表示されます。

 1時間に1回毎時0分にリポジトリをチェックし、リポジトリに更新があればビルドするように設定するには、スケジュール欄に以下のように入力します。

   0 * * * *

 15分ごとにしたければ、以下のように入力します。

   */15 * * * * 

 夜中の12時に1日1回だけのチェックにしたければ、以下のように入力します。

   0 0 * * *

 次ページでは、さらに実践テクをを紹介し、さまざまなプラグインについて説明します。

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。