概要
↑な感じで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 で動かないのであった。。