はじめに
こんばんは。
先週は自分の家の引っ越し、今週は両親の引越の手伝いで、ブログが全く書けていなく、WBEW退会待ったなしになっている私です。
今回はお世話になっているお仕事で、 以前ブログにも書いた tbls を使ってドキュメントを自動生成した話をブログに残します。
退会が迫っているので一気になぐり書きしたので、間違ってる箇所あるかもです。。。
今回は circleciを使って、developブランチにマージされた段階で tblsの自動生成が走るようにしました。
たぶん自動更新というよりは、 tbls diff
を使って、ドキュメント更新を促すというのが本来の使い方なのかなと思っていますが、今回は circleci で pushまでしちゃってます。
ちなみに tblsの以前の記事はこちらです。
やってみた
circleciの config.ymlは以下のとおりです。 ブログ化するために消しちゃったのですが、本来はphpunitを実行するための記述とかもあるので、少し冗長な感じになっております。
Laravelプロジェクトのマイグレーションを実行して、circleciのDBにテーブルを作成して、そこからtblsでドキュメントを作成しています。
前提として、circleciで登録している githubのssh keyに Allow write access
がついている必要があります。
version: 2.1 executors: default: docker: - image: circleci/php:7.3.5-apache - image: circleci/mysql:5.7-ram commands: setup_infrastructure: steps: - run: sudo apt update - run: sudo apt-get install -y libpng-dev graphviz - run: sudo docker-php-ext-install pdo_mysql gd setup_application: steps: - restore_cache: keys: - v1-dependencies-{{ checksum "composer.json" }} - v1-dependencies- - run: composer install -n --prefer-dist - save_cache: key: v1-dependencies-{{ checksum "composer.json" }} paths: - ./vendor - run: php artisan config:clear execute_tbls: steps: - run: command: | cd ./vendor wget https://github.com/k1LoW/tbls/releases/download/v1.19.0/tbls_v1.19.0_linux_amd64.tar.gz tar zxvf tbls_v1.19.0_linux_amd64.tar.gz ./tbls doc mysql://$DB_USERNAME:$DB_PASSWORD@$DB_HOST:$DB_PORT/$DB_DATABASE ../docs/schema -f jobs: tbls: executor: name: default environment: - APP_DEBUG: false - APP_ENV: develop - DB_DATABASE: circle_test - DB_HOST: 127.0.0.1 - DB_USERNAME: root - DB_PASSWORD: "" - DB_PORT: 3306 - MYSQL_ALLOW_EMPTY_PASSWORD: true steps: - checkout - add_ssh_keys: fingerprints: - "4d:f1:9a:38:98:3a:cb:3d:c6:c9:e7:bd:75:57:fe:14" - setup_infrastructure - setup_application - run: php artisan migrate:fresh - execute_tbls - run: ./.circleci/push_database_documents.sh develop workflows: version: 2 build: jobs: - tbls: filters: branches: only: develop
PRにDB構造の変化がない場合は、git commit 時にエラーステータスが返ってきちゃうので、そのへんの判断は シェルでやっちゃいました。
MODIFY_FILE_COUNT=`git status | grep docs/schema | wc -l` if [ $MODIFY_FILE_COUNT -ne 0 ]; then git config user.email "example_kojircok@gmail.com" git config user.name "circleci" git add docs/schema git commit -m 'update database documents' git push origin $1 fi
現状は問題は特に出ておらず、いい感じです。
終わりに
WBEW発足者として退会になるわけにはいかないという理由でなんとか書きました。
マジで危なかった。
もっとこうしたほうがいいとかあれば教えてもらいたいです!
現場からは以上です。
あと 光の開通工事までレンタルで貸し出された Softbank Air死ぬほど重い。