Open2
DBマイグレーションを含んだPRではtblsを使ってER図を自動更新する
問題意識
- テーブル設計を俯瞰的に理解するためにER図ほしい
- でも頑張って手動で運用していくのにはツライ。どうせ更新忘れ出てきそう
- これまでプロダクトで使っていたNoSQLと比べ、RDBではテーブル間の関係が更に重要になるため、レビュー時にER図がほしい
- マイグレーションファイルだけをPR上で見せられてもレビューしにくい。特に既存テーブルへのrelationを持たせたり、relationを持つテーブルを追加するときなど。
- 全体の俯瞰が頭に無いと、マイグレーション後にどう利用されるのかを理解したうえでのレビューが出来ない
tbls
-
k1LoW/tbls: tbls is a CI-Friendly tool for document a database, written in Go.
- マイグレーションが適用されたDBから、SVGでのER図や、Markdownのドキュメントを生成してくれる
- 「テーブルズ」と読むらしい
lintの機能もある
- 各カラムやindexへのコメントの有無
- 各テーブルに必ず必要な定義(ex: created_at, updated_at...)
- など
実行の対象テーブルはフィルタリング可能
GitHub Actionsへの組み込み
大雑把に以下のステップで動かす
- GitHub Actions上でDBサービスを起動する
- 起動したDBに対して、DBmigrationを実行する
- migration後のDBに対し、tblsを実行
- repository内のドキュメントと差分があれば、PRに追加でコミットする
BASEさんのブログで紹介されていたworkflowのサンプルyml
生成されたPRのサンプル
- BASEさんのブログに掲載されているPRを拝借