ハマログ

株式会社イーツー・インフォの社員ブログ

CircleCI2.0でER図を出力

はじめに

CIでER図の自動出力を考えていたところ、CircleCI x SchemaSpyの記事が結構ありました。
さっそく試してみたんだけど多分CircleCIの設定がうまくいってなくて、想定どおりに動かず挫折。

続いて、結構古いglobalcitizen/mysqlvizというコードをGithubで見つけたので、こちらを試したところ、成功したので、今のところこれで動かしています。

あと開発者がライセンスをGPLv3にしてくれた

Gitの構成

config.yml
ダンプファイルを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
構成は以下を参考
https://github.com/E2infoCI/ci_laravel_er

成果物
外部キーが設定されているとリレーションも勝手にできます。Laravelの名前でつながってる外部キーを自動でつなぐ実装をやりたい。
CICircleCIdatabaseDBERmysqlmysqlvizデータベース設計

  kaneko tomo   2018年6月26日


関連記事

Laravel6へのアップグレードで Call to undefined function str_slug()

はじめに 少し前にLaravel6がリリースされました。Laravel5.5で動…

Heroku、使ってみたい (前編)

はいどーも! Heroku使ったことがないので、この記事書きながら使ってみようと…

Laravel ExcelでCSV出力したらSJISで出せなかったので自分で書きました

佐川急便か何かのシステムと連携するために、Shift_JISで出力したCSVを作…


← 前の投稿

次の投稿 →