初めに
http://blogs.yahoo.co.jp/dk521123/33813814.htmlで考えたことを実際に環境設定してみる。 初めなので、ローカル上にCIツールを使って、プロジェクト管理環境を構築する
構成
* 初めっから色々と欲を出すと挫折したので、手始めに、以下のようなシンプルな構成を行う* CIツール :Jenkins * プログラム言語 :Java(開発環境はEclipse) * ビルドツール :Ant * 単体試験ツール :JUnit
手順
[1] Jenkins を設定する * 以下の関連記事を参照のことhttp://blogs.yahoo.co.jp/dk521123/34440556.html
[2] Jenkins に Ant を設定する * 以下の関連記事を参照のことhttp://blogs.yahoo.co.jp/dk521123/34977781.html
[3] 以下を作成する(実際のファイルは以下のサンプルを参照のこと) 3-1) Java 3-2) 3-1)のコードの JUnit 3-3) 3-2)の実行を行う build.xml [4] ジョブ作成を作成する 4-1) Jenkinsのトップ画面から、「新規ジョブ作成」を選択 4-2) 以下を設定し、「OK」ボタンを押下する 4-2-1) ジョブ名:「(任意の名前。ここでは)SampleProjectJob」 4-2-2) 「フリースタイル・プロジェクトのビルド」にチェックを付ける 4-3) JDK欄を「(JDKの名前。ここでは)jdk1.8.0」に選択する 4-4) ビルド欄にある[ビルド手順の追加]-[Antの呼び出し]を選択し、以下を設定する 4-4-1) 「高度な設定...」を押下(=>「ビルドファイル」欄などが表示される) 4-4-2) 使用するAnt:「(「設定手順」の4-2)の任意の名前。ここでは)ant1.9.4」 4-4-3) ターゲット : 「(使用したいAntのターゲット名。ここでは)test.all」 4-4-4) ビルドファイル : 「3-3)のAntのbuildファイル名」 => この時点で、「保存」し「ビルド実行」を押下して、「成功」すれば、まずはOK!! 4-5) ビルド・トリガ欄で「定期的に実行」にチェックを付けると、 スケジュール欄が表示されるので、ひとまず「H/5 * * * *」(5分ごと)を入力する ... 以下『補足:「定期的に実行」の書き方について』を参照のこと 4-6) 「保存」ボタン押下 => 5分ごとにテストが実行され、成功すればOK ■「JUnitテスト結果の集計」を行う 以降は、任意の設定だが、せっかくだから、設定する [5] プロジェクトの高度なオプション欄の「高度な設定...」ボタンを押下 5-1) 「カスタムワークスペースを使用」に、チェックを付ける 5-2) 「ディレクトリ」に、EclipseのWorkspaceを設定する(ここでは「C:\workspace」) 5-3) 「表示用プロジェクト名」に、任意の文字を設定する(ここでは「SampleProject」) [6] ビルド後の処理欄の[ビルド後の処理の追加]-[JUnitテスト結果の集計]を選択 6-1) 「テスト結果XML」に、「【Eclipseのプロジェクト名】(/【任意のディレクトリ】)/*.xml」を設定する (ここでは「SampleJavaCodes/result/*.xml」) [7] 「保存」ボタン押下 => 「ビルド実行」を押下して、「テスト結果の推移」が表示されれば、OK!!
サンプル
* あくまで、設定を確認するものなので、あんまり込み入ったことはしない
3-1) Java
public class Main { public static String sayHello(String name) { return "Hello, " + name + "!"; } }
3-2) 3-1)のコードの JUnit
import static org.junit.Assert.assertEquals; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Suite; import org.junit.runners.Suite.SuiteClasses; @RunWith(Suite.class) @SuiteClasses({}) public class MainTest { @Test public void test() { String result = Main.sayHello("Mike"); assertEquals("Hello, Mike!", result); } }
3-3) 3-2)の実行を行う build.xml
以下を参考にするhttp://blogs.yahoo.co.jp/dk521123/34003097.html
Eclipseを使用しているなら、[File]-[Export]-[General]-[Ant Buildfiles]からbuild.xmlを生成する(junit.jarをパスが変わるので)
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <project basedir="." default="test.all" name="SampleJavaCodes"> <property name="ECLIPSE_HOME" location="../../eclipse/"/> <property name="junit.output.dir" value="result"/> <property name="junit.src.test" value="./test"/> <path id="JUnit 4.libraryclasspath"> <pathelement location="${ECLIPSE_HOME}plugins/org.junit_4.11.0.v201303080030/junit.jar"/> <pathelement location="${ECLIPSE_HOME}plugins/org.hamcrest.core_1.3.0.v201303031735.jar"/> </path> <path id="SampleJavaCodes.classpath"> <pathelement location="bin"/> <path refid="JUnit 4.libraryclasspath"/> </path> <target name="init" description="初期化"> <property name="class.path" value="./class" /> <delete dir="${class.path}"/> <mkdir dir="${class.path}"/> </target> <target name="compile" depends="init" description="Javaコンパイル"> <javac srcdir="./src" destdir="./class" /> </target> <target name="test.all"> <mkdir dir="${junit.output.dir}"/> <junit fork="yes" printsummary="withOutAndErr"> <formatter type="xml"/> <batchtest fork="yes" todir="${junit.output.dir}"> <fileset dir="${junit.src.test}" > <include name="**/*Test.java" /> </fileset> </batchtest> <classpath refid="SampleJavaCodes.classpath"/> </junit> </target> </project>
補足:「定期的に実行」の書き方について
基本的に「?」アイコン(ヘルプ)にのってることだが* 各行は、TABかスペースで区切った5つの項目から構成されている 例:5分ごとに実行する H/5 * * * * --- MINUTE HOUR DOM MONTH DOW | | | | +- 曜日 (0-7) 0と7は日曜日 | | | +------ 月 (1-12) | | +----------- 日 (1-31) | +---------------- 時 (0-23) +---------------------- 分 (0-59) * 空行や'#'で始まる行は、コメントとして無視される
記述例
* 0-30分の間で10分ごと => H(0-29)/10 * * * * * 平日の9-16時の間で2時間ごと => H 9-16/2 * * 1-5 * 12月を除く毎月1日と15日に1回 => H H 1,15 1-11 *