* 概要 [#x2030101]

[[Seasarプロジェクト用のHudson環境:https://www.seasar.org/hudson/]]の説明です。自由に書き足してください。
[[Seasarプロジェクト用のJenkins環境:https://www.seasar.org/ci/]]の説明です。自由に書き足してください。

#contents

* アカウント [#m5f56e98]

アカウントは、[[Seasar Members:https://www.seasar.org/members/]]で利用しているユーザ名とパスワードです。

* 運営方針 [#dba3b772]

- 検討中
Seasar.orgのコミッタアカウントでログインすると利用することができます。既に作成されているジョブの設定や命名規則を真似てジョブを作成し利用してください。

通常のビルドとテストに加えて、Teeda や S2Dao が行っているように、各自の所属するプロジェクトが依存するプロジェクト(例: S2Container) の SNAPSHOT を使ってのビルドとテストをしてもらえると、万が一、依存先のプロジェクトがデグってしまった場合に早期発見できる可能性が高まりますので、是非そのような用途にもお使いください。
** アイデア [#s9d6248e]

- Hudsonのビルド失敗通知専用のメーリングリストを作成し、そこにメールを投げる [[[operation:2123]:http://ml.seasar.org/archives/operation/2008-November/003951.html]]
- Jenkinsのビルド失敗通知専用のメーリングリストを作成し、そこにメールを投げる [[[operation:2123]:http://ml.seasar.org/archives/operation/2008-November/003951.html]]
-- 1. コミッタ全員
-- 2. プロジェクト単位
--- [2009-02-11] 保留中

* 導入されているPlugin [#h5032515]

- Disk Usage Plugin
- JIRA Plugin
- Task Scanner
- Checkstyle Plugin
- FindBugs Plugin
- PMD Plugin
- Warnings Plugin
- Phing Plugin
- Emotional Hudson Plugin
- Emotional Jenkins Plugin
- (Jenkins Test Database Plug-in)

* ジョブ設定例 [#gd38e47f]

** Maven プロジェクト + JDK 1.5 [#w376f428]

Maven プロジェクトのジョブを JDK 1.5 環境でビルドしたい場合は、下記の設定が必要です。この設定により、ジョブの起動時は JDK 1.6 ですが、コンパイル時は JDK-1.5 が使用されます。

これは [[JENKINS-18403:https://issues.jenkins-ci.org/browse/JENKINS-18403]] に関連し、ジョブ実行時に pom.xml を解析する際、ジョブ設定で指定した JDK 1.5 ではなく、Jenkins が動作する JDK (最新の JDK) が使用されてしまい、コンパイルに失敗するためです。

この問題はフリースタイル・プロジェクトのジョブでは発生しません。

- JDK: JDK-1.6
- ビルド -> ゴールとオプション:
-- -Dmaven.compiler.fork=true -Dmaven.compiler.executable=${JENKINS_HOME}/tools/hudson.model.JDK/JDK-1.5/bin/javac clean install
** ビルド設定 [#eab4037c]

*** Open Tasks [#x945b6a2]

- Scan workspace for open tasks: チェックする
- Files to scan: **/*.java
- Tasks tags
-- High priority: FIXME
-- Normal priority: TODO

*** PMD [#h2a58fb3]

- Publish PMD Analysis Results: チェックする
-- 使い方??
-- 使い方?? (詳しい方記述お願いします)

*** Checkstyle [#je2e47d0]

- Publish Checkstyle Analysis Results: チェックする
-- 使い方??
-- 使い方?? (詳しい方記述お願いします)

*** FindBugs [#k04469fd]

- Publish FindBugs Analysis Results: チェックする
-- 使い方??
-- 使い方?? (詳しい方記述お願いします)

*** Emotional Hudson [#o848258e]
*** Emotional Jenkins [#o848258e]

- ビルド後の処理
-- Emotional Hudson: チェックする
-- Emotional Jenkins: チェックする

** ビルド後の処理 [#qa3a6ba4]

- Publish Compiler Warnings: チェックする
-- File pattern: **/*.java

* テスト用データベースを使用するには [#z182fc96]
* テスト用データベースを使用するには [#testdb]

Hudson用のサーバにテスト用データベースを用意してあります。このデータベースを使用することでDBを使用したテストも実行することができます。データベース環境は、Hudsonに新規にジョブを作成すると、作成されたジョブ名に従って5分以内に自動作成されます。
Jenkins用のサーバにはテスト用のデータベース環境を用意してあります。このデータベースを使用することでDBを使用したテストも実行することができます。データベース環境を使用したい場合は、次のジョブ設定を行うとジョブ名に従って5分以内に自動作成されます。

- ジョブ設定
-- Use test database: チェックする (必須)
-- 追加で必要な数: 任意の数字 (オプション)

#ref(jenkins_testdb.png)

- 軸の切り替え例
-- [[s2container-2.4-s2jdbc-it: diconファイルのOGNL式を利用:https://www.seasar.org/svn/s2container/trunk/s2jdbc-it/src/test/resources/]]

データベースソフトウェアに応じて用意されるデータベース環境は下記のとおりです。

** PostgreSQL [#s33034fe]

- postgresql-server-8.1.11-1.el5_1.1
- PostgreSQL 8.4.13
-- postgresql-server-8.4.13-1.el6_3.x86_64
- HOST: localhost
- PORT: 5432 (default)

|Hudson Job| DB| USER| PASS |h
|Jenkins Job| DB| USER| PASS |h
|s2container-2.4-seasar2| s2container_2_4_seasar2| s2container_2_4_seasar2| s2container_2_4_seasar2|
|s2container-2.4-s2jdbc-it| s2container_2_4_s2jdbc_it| s2container_2_4_s2jdbc_it| s2container_2_4_s2jdbc_it|
|Cubby-2.0.x| cubby_2_0_x| cubby_2_0_x| cubby_2_0_x|
|>|>|>|BGCOLOR(#d0d8e0):「追加で必要な数」を設定した場合の追加環境|
|s2container-2.4-seasar2| s2container_2_4_seasar2_連番| s2container_2_4_seasar2_連番| s2container_2_4_seasar2_連番|
|s2container-2.4-s2jdbc-it| s2container_2_4_s2jdbc_it_連番| s2container_2_4_s2jdbc_it_連番| s2container_2_4_s2jdbc_it_連番|
|Cubby-2.0.x| cubby_2_0_x_連番| cubby_2_0_x_連番| cubby_2_0_x_連番|

 TODO: USER/PASSのルールをMySQLに併せて変更するかもしれません (Oracle, DB2にも制限がないかどうか確認してから)

*** その他、参考情報 [#hd23e72d]

- デフォルトエンコーディング

 postgres=# \encoding
 UTF8

** MySQL [#n7959a7f]

- mysql-server-5.0.45-7.el5
- MySQL 5.1.61
-- mysql-server-5.1.61-4.el6.x86_64
- HOST: localhost
- PORT: 3306 (default)
- Default Storage Engine: InnoDB

MySQLの作成できるDBユーザ名の長さが16文字までに制限されているため、次のように「.」や「-」以前の文字列をユーザ名とパスワードに使用します。

|Hudson Job| DB| USER| PASS |h
|Jenkins Job| DB| USER| PASS |h
|s2container-2.4-seasar2| s2container_2_4_seasar2| s2container| s2container |
|s2container-2.4-s2jdbc-it| s2container_2_4_s2jdbc_it| s2container| s2container |
|Cubby-2.0.x| cubby_2_0_x| cubby| cubby |
|>|>|>|BGCOLOR(#d0d8e0):「追加で必要な数」を設定した場合の追加環境|
|s2container-2.4-seasar2| s2container_2_4_seasar2_連番| s2container| s2container |
|s2container-2.4-s2jdbc-it| s2container_2_4_s2jdbc_it_連番| s2container| s2container |
|Cubby-2.0.x| cubby_2_0_x_連番| cubby| cubby |

*** 注意事項 [#u59f576e]

- テーブル名の大文字と小文字は区別されます

Hudsonから利用可能なこのMySQLサーバ環境は、テーブル名の大文字と小文字が区別されます。これはMySQLのデフォルトの仕様として、大文字と小文字が区別されるファイルシステム環境ではテーブル名の大文字と小文字も区別して管理されるためです。
Jenkinsから利用可能なこのMySQLサーバ環境は、テーブル名の大文字と小文字が区別されます。これはMySQLのデフォルトの仕様として、大文字と小文字が区別されるファイルシステム環境ではテーブル名の大文字と小文字も区別して管理されるためです。

- 参考情報: http://dev.mysql.com/doc/refman/5.1/ja/identifier-case-sensitivity.html

*** その他、参考情報 [#h49fbee3]

- デフォルトエンコーディング

 mysql> show variables like '%char%';
 +--------------------------+----------------------------+
 | Variable_name            | Value                      |
 +--------------------------+----------------------------+
 | character_set_client     | utf8                       |
 | character_set_connection | utf8                       |
 | character_set_database   | utf8                       |
 | character_set_filesystem | binary                     |
 | character_set_results    | utf8                       |
 | character_set_server     | utf8                       |
 | character_set_system     | utf8                       |
 | character_sets_dir       | /usr/share/mysql/charsets/ |
 +--------------------------+----------------------------+
 8 rows in set (0.00 sec)

** Oracle [#q9b50ceb]

 準備中
- Oracle Express Edition
-- Oracle Database Express Edition 11g Release 2 for Linux x64 (11.2.0.1)
- HOST: localhost
- PORT: 1521 (default)

Oracleは接続ユーザごとに異なる空間を持っているため、接続先DB(インスタンス)はすべて同じ xe になります。

|Jenkins Job| DB| USER| PASS |h
|s2container-2.4-seasar2| xe| s2container_2_4_seasar2| s2container_2_4_seasar2|
|s2container-2.4-s2jdbc-it| xe| s2container_2_4_s2jdbc_it| s2container_2_4_s2jdbc_it|
|Cubby-2.0.x| xe| cubby_2_0_x| cubby_2_0_x|
|>|>|>|BGCOLOR(#d0d8e0):「追加で必要な数」を設定した場合の追加環境|
|s2container-2.4-seasar2| xe| s2container_2_4_seasar2_連番| s2container_2_4_seasar2_連番|
|s2container-2.4-s2jdbc-it| xe| s2container_2_4_s2jdbc_it_連番| s2container_2_4_s2jdbc_it_連番|
|Cubby-2.0.x| xe| cubby_2_0_x_連番| cubby_2_0_x_連番|

*** その他、参考情報 [#hd23e72d]

- キャラクタセット

 SQL> select parameter, value from nls_database_parameters where parameter like '%HARACTERSET%';
 PARAMETER
 ------------------------------
 VALUE
 --------------------------------------------------------------------------------
 NLS_CHARACTERSET
 AL32UTF8
 NLS_NCHAR_CHARACTERSET
 AL16UTF16

** DB2 [#zf8a136d]

 準備中
- DB2 Express-C 10.1 for Linux 64-bit
-- db2_v101_linuxx64_expc
- HOST: localhost
- PORT: 50000 (default)

DB2の作成できるDB名の長さが8文字までに制限されているため、接続先DBはすべて同じ db にし、ジョブごとに異なるスキーマを使用します。スキーマの指定には必ず ''大文字'' で指定してください。
また、DB2は接続ユーザがローカルアカウントのため、接続ユーザはすべて同じアカウントを使用するようになっています。

|Jenkins Job| DB| SCHEMA| USER| PASS |h
|s2container-2.4-seasar2| db| S2CONTAINER_2_4_SEASAR2| db2inst1| seasar|
|s2container-2.4-s2jdbc-it| db| S2CONTAINER_2_4_S2JDBC_IT| db2inst1| seasar|
|Cubby-2.0.x| db| CUBBT_2_0_X| db2inst1| seasar|
|>|>|>|>|BGCOLOR(#d0d8e0):「追加で必要な数」を設定した場合の追加環境|
|s2container-2.4-seasar2| db| S2CONTAINER_2_4_SEASAR2_連番| db2inst1| seasar|
|s2container-2.4-s2jdbc-it| db| S2CONTAINER_2_4_S2JDBC_IT_連番| db2inst1| seasar|
|Cubby-2.0.x| db| CUBBT_2_0_X_連番| db2inst1| seasar|

*** 注意事項 [#f750d095]

- dicon ファイルを使用した xaDataSource の設定例
-- s2container_2_4_s2jdbc_it の場合
--- addProperty で currentSchema と currentFunctionPath を設定します
--- スキーマ名の指定には ''大文字'' と ''小文字'' の区別があります、必ず ''大文字'' で指定してください、小文字 で指定すると''ストアドプロシージャの実行に失敗します''
--- currentFunctionPath を指定しない場合、''ストアドプロシージャの実行に失敗します''

 <component name="xaDataSource"
     class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
     <property name="driverClassName">
         "com.ibm.db2.jcc.DB2Driver"
     </property>
     <property name="URL">
         "jdbc:db2://localhost:50000/db"
     </property>
     <property name="user">"db2inst1"</property>
     <property name="password">"seasar"</property>
     <initMethod name="addProperty">
         <arg>"currentSchema"</arg>
         <arg>"S2CONTAINER_2_4_S2JDBC_IT"</arg>
     </initMethod>
     <initMethod name="addProperty">
         <arg>"currentFunctionPath"</arg>
         <arg>"S2CONTAINER_2_4_S2JDBC_IT"</arg>
     </initMethod>
 </component>

*** その他、参考情報 [#hd23e72d]

- キャラクタセット

 $ db2 get database configuration for データベース名 | grep -i code
  Database code page                                      = 1208
  Database code set                                       = UTF-8
  Database country/region code                            = 1

//*** 以下、古い方式 [#dc38eecb]

//DB2の作成できるDB名の長さが8文字までに制限されているため、次のルールで使用するデータベース名を決めてあります。
//また、DB2は接続ユーザがローカルアカウントのため、接続ユーザはすべて同じアカウントを使用するようになっています。

//- 作成ルール
//-- 先頭2文字: db
//-- 残り6文字: JenkinsのJob名の MD5 の 先頭6文字
//--- 大文字小文字そのままの文字列の MD5 です

//|Jenkins Job| DB| USER| PASS |h
//|s2container-2.4-seasar2| db46700f| db2inst1| seasar|
//|s2container-2.4-s2jdbc-it| db1c2ae7| db2inst1| seasar|
//|Cubby-2.0.x| dbb2a53f| db2inst1| seasar|

//- ジョブ名を使用したDB名の求め方 (UNIX環境用)

// $ echo "db"`echo -n s2container-2.4-seasar2 | md5sum | head -c 6`
// db46700f
// $ echo "db"`echo -n s2container-2.4-s2jdbc-it | md5sum | head -c 6`
// db1c2ae7
// $ echo "db"`echo -n Cubby-2.0.x | md5sum | head -c 6`
// dbb2a53f

* 再配布禁止のライブラリを使用するには [#a00466cc]

商用DBなどの再配布禁止のライブラリをCIに使用したい場合は、Hudsonが導入されたサーバのローカルリポジトリにあるライブラリを指定することで使用することができます。
商用DBなどの再配布禁止のライブラリをCIに使用したい場合は、Jenkinsが導入されたサーバのローカルリポジトリにあるライブラリを指定することで使用することができます。

** 利用上の注意 [#xd3d1382]

再配布禁止ライブラリのための <dependency> は、pom.xml の <dependencies> に直接記述しないでください。これは、再配布禁止のライブラリは、Hudsonが導入されたサーバのローカルリポジトリにしか配置されていないため、他の人が自分の環境にチェックアウトした時にビルドできなくなるためです。
再配布禁止ライブラリのための <dependency> は、pom.xml の <dependencies> に直接記述しないでください。これは、再配布禁止のライブラリは、Jenkinsが導入されたサーバのローカルリポジトリにしか配置されていないため、他の人が自分の環境にチェックアウトした時にビルドできなくなるためです。

再配布禁止ライブラリは、Maven2 のプロファイルを使用して依存性を定義し、Hudsonのジョブ設定にあるビルド手順で使用するプロファイルを指定するといいでしょう。
再配布禁止ライブラリは、Maven2 のプロファイルを使用して依存性を定義し、Jenkinsのジョブ設定にあるビルド手順で使用するプロファイルを指定するといいでしょう。

- 実施例
-- https://www.seasar.org/hudson/job/s2container-2.4-s2jdbc-it/
-- https://www.seasar.org/ci/job/s2container-2.4-s2jdbc-it/
--- [[s2jdbc-itのpom.xml>http://svn.seasar.org/browse/trunk/s2jdbc-it/pom.xml?root=s2container&view=markup]]

** 用意してあるライブラリ [#zf602ce9]

他に希望するライブラリ・バージョンがある場合は [[operation メーリングリスト:https://www.seasar.org/mailman/listinfo/operation]] までご相談ください。

- Oracle: ojdbc14.jar

 <dependency>
   <groupId>com.oracle</groupId>
   <artifactId>ojdbc14</artifactId>
   <version>10.2.0.4</version>
 </dependency>

- Oracle: ojdbc5.jar

-- 推奨

 <dependency>
   <groupId>com.oracle</groupId>
   <artifactId>ojdbc5</artifactId>
   <version>11.2.0.3</version>
 </dependency>

-- 旧バージョン

 <dependency>
   <groupId>com.oracle</groupId>
   <artifactId>ojdbc5</artifactId>
   <version>11.1.0.7.0</version>
 </dependency>

- Oracle: ojdbc6.jar

-- 推奨

 <dependency>
   <groupId>com.oracle</groupId>
   <artifactId>ojdbc6</artifactId>
   <version>11.2.0.3</version>
 </dependency>

-- 旧バージョン

 <dependency>
   <groupId>com.oracle</groupId>
   <artifactId>ojdbc6</artifactId>
   <version>11.1.0.7.0</version>
 </dependency>

- MS SQL Server: sqljdbc.jar

 <dependency>
   <groupId>com.microsoft</groupId>
   <artifactId>sqljdbc</artifactId>
   <version>1.2.2828</version>
 </dependency>

- DB2: db2jcc.jar

-- 推奨

 <dependency>
   <groupId>com.ibm</groupId>
   <artifactId>db2jcc</artifactId>
   <version>3.64.104</version>
 </dependency>

-- 旧バージョン

 <dependency>
   <groupId>com.ibm</groupId>
   <artifactId>db2jcc</artifactId>
   <version>3.50.152</version>
 </dependency>

- DB2: db2jcc4.jar

-- 推奨

 <dependency>
   <groupId>com.ibm</groupId>
   <artifactId>db2jcc4</artifactId>
   <version>4.14.111</version>
 </dependency>

-- 旧バージョン

 <dependency>
   <groupId>com.ibm</groupId>
   <artifactId>db2jcc4</artifactId>
   <version>3.50.152</version>
 </dependency>

* ドキュメント [#w11a2e19]

その他、Hudsonの詳細な使い方については、Hudsonのサイトなどを見てください。
-http://hudson.dev.java.net/
-http://hudson.gotdns.com/wiki/display/JA/Use+Hudson
-http://gihyo.jp/dev/feature/01/hudson/
その他、Jenkinsの詳細な使い方については、Jenkinsのサイトなどを見てください。

-http://jenkins-ci.org/
-https://wiki.jenkins-ci.org/display/JENKINS/Home


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS