概要
qiita.com
↑な感じでDB定義の管理にSchemaSpyを利用しているんだが、リレーションの描画にSchemaSpyは Graphviz を使っている。
しかし最新のビルドでリレーションの描画がされていなかった。
その調査と対応のまとめ。
現象
SchemaSpyで描画されなかったメッセージ。
SchemaSpy was unable to generate a diagram of table relationships.
SchemaSpy requires Graphviz version 2.2.1 or versions greater than 2.4 from www.graphviz.org.
SchemaSpyの実行ログ。
Failed to query Graphviz version information
with: dot -V
java.io.IOException: Cannot run program "dot": error=2, No such file or directory
原因と対応
CircleCIのコンテナイメージを変更したのが原因。
Graphviz は Ubuntu14 で動かない。
[Project Setting] → [Build Environment]→ [OS to use for builds]
「Ubuntu 14.04 (Trusty)」を「Ubuntu 12.04 (Precise)」に変更することで解決する。
調査の記録
Rebuild with ssh してコンテナにSSHしてみた。
ubuntu@box32:~$ dot -V
The program 'dot' is currently not installed. You can install it by typing:
sudo apt-get install graphviz
無いと言われる。。描画されていたときのコンテナもsshしてみる。
ubuntu@box1032:~$ dot -V
dot - graphviz version 2.26.3 (20100126.1600)
もしかして無くなってしまった?と思い公式を確認。
Ubuntu 12.04 (Precise) - CircleCI
あるって書いてある。。
こんな記事を見つけた。
mao-instantlife.hatenablog.com
サンプルプロジェクトで自分でビルドしてインストールするようにしてみた。
→うまく行ったヽ(=´▽`=)ノ
dependencies:
cache_directories:
- graphviz-2.38.0
pre:
- wget -O graphviz.tar.gz --quiet http://www.graphviz.org/pub/graphviz/ARCHIVE/graphviz-2.38.0.tar.gz
- tar -zxf graphviz.tar.gz
- graphviz-2.38.0/configure --silent
- make --silent --ignore-errors && make --silent --ignore-errors install > /dev/null
- echo 'which dot && version:'
- which dot
- dot -V
自分でビルドするのはイマイチなので、バイナリをインストールするように修正。
dependencies:
pre:
- wget -O ../graphviz-dev_2.38.0-1~precise_all.deb http://www.graphviz.org/pub/graphviz/stable/ubuntu/ub12.04/i386/graphviz-dev_2.38.0-1~precise_all.deb
- sudo dpkg -i ../graphviz-dev_2.38.0-1~precise_all.deb
- dot -V
wget毎回するのも嫌なので、プロジェクト内部で持つように修正。
pre:
- sudo dpkg -i ./.circleci/graphviz-dev_2.38.0-1-precise_all.deb
- dot -V
サンプルプロジェクトで動作検証できたので、本ちゃんのプロジェクトに適用!
ところが
$ dot -V
bash: line 1: dot: command not found
dot -V returned exit code 127
Action failed: dot -V
CIのログをサンプルプロジェクトと細かく比較してみる
→Start containerに差分
CIRCLE_BUILD_IMAGE=ubuntu-12.04
CIRCLE_BUILD_IMAGE=ubuntu-14.04
どうも意図せずコンテナイメージを変更していたらしい。。
[Project Setting] → [Build Environment]→ [OS to use for builds]
「Ubuntu 14.04 (Trusty)」を「Ubuntu 12.04 (Precise)」に変更。
そもそも Ubuntu14 で動かないのであった。。