Jenkins+schemaSpyでHTMLテーブル定義書を生成する

DBスキーマからテーブル定義書を生成する方法を探していた所、schemaSpyというツールを発見。
これとJenkinsを組み合わせて、常に最新のHTMLテーブル定義書を生成する方法を確立できた。

前提

  • UbuntuServer11.10
  • MySQL5.1
  • JDK1.6系がインストールされていること
  • Jenkins実行サーバで対象のDBにアクセス可能なこと

手順

JDBCコネクタインストール
sudo apt-get install libmysql-java
# 確認
ls /usr/share/java/mysql.jar
schemaSpyのjarを配置
mkdir /var/lib/jenkins/schemaSpy
cd /var/lib/jenkins/schemaSpy
wget http://jaist.dl.sourceforge.net/project/schemaspy/schemaspy/SchemaSpy%205.0.0/schemaSpy_5.0.0.jar
Jenkinsに設定追加

以下をJenkinsの「ビルド手順:シェルの実行」に追加する。
※2012/9/21 追記 以下のは単独で定義する必要あり。他の「シェルの実行」と一緒の手順に追加すると、テストが失敗してもビルドは正常とみなされてしまうケースがあった。

# schemaSpyによるHTMLテーブル定義書生成
mkdir -p $WORKSPACE/schemaSpy
java -jar /var/lib/jenkins/schemaSpy/schemaSpy_5.0.0.jar -dp /usr/share/java/mysql.jar \
-t mysql -o $WORKSPACE/schemaSpy -host localhost  -u hoge -p fuga -db piyo -charset utf-8

# 静的ファイルを公開用フォルダ/var/lib/jenkins/userContentに置くと、http://~/userContent/から参照可能
mkdir -p /var/lib/jenkins/userContent/$JOB_NAME/
ln -fns $WORKSPACE/schemaSpy /var/lib/jenkins/userContent/$JOB_NAME/schemaSpy

これで http://~/userContent/$JOB_NAME/schemaSpy/index.html からテーブル定義書生成を閲覧可能になる。
Migrationでのコメント追加 と組み合わせるとイイ感じ。

補足

MySQLでschemaSpyを使用する場合でportを指定する場合は、portオプションが効かないのでhostオプションにport番号を追加(※localhost:13306みたいに)して実行する必要あり。
これは接続文字列が「jdbc:mysql:///」で展開され、portが無視されているため発生する模様。

×失敗(port:13306)
java -jar /var/lib/jenkins/schemaSpy/schemaSpy_5.0.0.jar -dp /usr/share/java/mysql.jar \
-t mysql -o $WORKSPACE/schemaSpy -host localhost -port 13306 -u hoge -p fuga -db piyo -charset utf-8

○成功(port:13306)
java -jar /var/lib/jenkins/schemaSpy/schemaSpy_5.0.0.jar -dp /usr/share/java/mysql.jar \
-t mysql -o $WORKSPACE/schemaSpy -host localhost:13306  -u hoge -p fuga -db piyo -charset utf-8