CircleCI2.0でER図を出力
はじめに
CIでER図の自動出力を考えていたところ、CircleCI x SchemaSpyの記事が結構ありました。
さっそく試してみたんだけど多分CircleCIの設定がうまくいってなくて、想定どおりに動かず挫折。
続いて、結構古いglobalcitizen/mysqlvizというコードをGithubで見つけたので、こちらを試したところ、成功したので、今のところこれで動かしています。
あと開発者がライセンスをGPLv3にしてくれた。
Gitの構成
config.yml
ダンプファイルをgitにコミットする方法を考えたんだけど面倒だったので、一旦migration動かしてmysqldumpしたファイルに対してER図を出力する流れにしました。
あとmysqlvizがcomposerでうまくはいらなかったので、予め取得しておいたファイルをmvしています。
ダンプファイルをgitにコミットする方法を考えたんだけど面倒だったので、一旦migration動かしてmysqldumpしたファイルに対してER図を出力する流れにしました。
あとmysqlvizがcomposerでうまくはいらなかったので、予め取得しておいたファイルをmvしています。
version: 2 jobs: build: docker: - image: circleci/php:7.2-apache-node-browsers environment: - APP_DEBUG: true - APP_ENV: testing - DB_HOST=127.0.0.1 - DB_PORT=3306 - DB_DATABASE=circleci - DB_USERNAME=circleci - DB_PASSWORD=circleci - image: circleci/mysql:5.7 environment: - MYSQL_ROOT_PASSWORD=circleci - MYSQL_DATABASE=circleci - MYSQL_USER=circleci - MYSQL_PASSWORD=circleci working_directory: ~/laravel steps: - checkout - run: name: module install command: | sudo docker-php-ext-install pdo_mysql sudo apt install -y mysql-client sudo apt-get install -y graphviz - restore_cache: keys: - v1-dependencies-{{ checksum "src/composer.json" }} - v1-dependencies- - run: name: composer self-update working_directory: src command: sudo composer self-update - run: name: composer install working_directory: src command: composer install -n --prefer-dist - save_cache: paths: - ./src/vendor key: v1-dependencies-{{ checksum "src/composer.json" }} - run: name: php artisan migrate working_directory: src command: php artisan migrate - run: name: mkdir & change permissions command: | sudo mkdir -p /output sudo chmod 777 /output - run: name: mysqldump command: sudo mysqldump -h 127.0.0.1 -u circleci -d circleci -pcircleci > /output/mysqldump.sql - run: name: Run mysqlviz working_directory: src command: | mv ../ci/vendor/mysqlviz ./vendor/ php ./vendor/mysqlviz/mysqlviz -f /output/mysqldump.sql > /output/mysqldump.dot dot -Tpng /output/mysqldump.dot > /output/mysqldump.png - store_artifacts: path: /output destination: reports
外部キーが設定されているとリレーションも勝手にできます。Laravelの名前でつながってる外部キーを自動でつなぐ実装をやりたい。