tblsによるデータベースドキュメントの更新をGitHub Actionsで自動化してみる
tblsという非常に便利なデータベースドキュメント生成ツールがあり、よく利用させてもらっている。「tbls is 何?」という人は各自で調べてみてほしい。
これまでドキュメントを更新するときは、ローカルでtbls doc -f
して、差分をpushしていた。しかし、これではドキュメントの更新し忘れが発生するため、自動化したいと思い、GitHub Actionsと組み合わせてみることにした。
name: ci on: push jobs: test: runs-on: ubuntu-latest services: database: image: mysql:5.7 ports: - 3306:3306 env: MYSQL_ALLOW_EMPTY_PASSWORD: "yes" MYSQL_DATABASE: "testdb" options: --health-cmd "mysqladmin ping -h localhost" --health-interval 10s --health-timeout 5s --health-retries 5 steps: - uses: actions/checkout@v2 - name: setup git run: | git config --local user.email "メールアドレス" git config --local user.name "ユーザー名" - name: setup db run: | mysql -uroot -h127.0.0.1 -P3306 testdb < schema.sql - name: tbls run: | curl -sL https://git.io/use-tbls > /tmp/use-tbls.tmp && . /tmp/use-tbls.tmp tbls diff || (tbls doc -f && git add . && git commit -m 'auto commit' && git push)
こんな感じ。メインの処理は下2行のみ。公式のREADMEに書いてあるような方法でtblsコマンドを使える状態にし、tbls diff
で差分が出ていればドキュメントを再生成してコミットとプッシュをするようにしている。
やっている事自体はとてもシンプルなんだけど、このような自動化によってドキュメントの更新し忘れを防ぐことができるので便利。
今回はtblsについての話だったが、例えば、フォーマッター関連処理も同じような感じで自動化しても良いかもしれない。