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: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
参考URL
- http://d.hatena.ne.jp/okinaka/20120528/1338179444
- http://www.syboos.jp/oss/doc/schemaspy.html
- http://daipresents.com/2012/jenkins%E3%82%92%E3%81%9F%E3%81%A3%E3%81%9F1%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A7%E5%85%AC%E9%96%8B%E7%94%A8maven%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%81%AB%E3%81%97%E3%81%A6/