Flyway Rollupをつくった

https://github.com/hachi-eiji/flyway-rollup

仕事でFlywayを使ってるのですが、いくつが問題が出てきて

  • 開発が進むとファイルが増える(V100とかまでできた)
  • flywayのlocationsを安定版(本番で稼働中)と開発用(自分が開発中)でディレクトリを分けた場合に、

他の人が安定版ディレクトリにpushした後に,flyway:migrateを叩いてもversion番号が進んでいるため安定版の内容が反映されない

という問題があって、毎回flyway:init → migrateを実行してると、initで消されると困るデータ(管理画面から入力されているデータ)が出てきました。
ということで、

  • 最新の安定バージョンの番号のファイルにこれまで流したスクリプトファイルをマージ
  • schema_versionテーブルの中からdevelopment ディレクトリの中にあるものだけ削除する.

というのを作ってみました。想定している動きとしては

一定期間でstableディレクトリをrollupする(Jenkinsなどでやらせたい)

  1. 開発者は各featureブランチへマージ
  2. flyway devCleanを実行するとschema_versionの該当レコードは消える
  3. lyway migrateを実行するとrollupしたスクリプト + developmentのところは実行される -> 開発可能状態

現状の課題は、rollupしたファイルのchecksumがschema_versionテーブルのchecksum列とずれること。flyway3.0のデフォルト挙動は最初にvalidateを行ってからmigrateを実行するのでエラーが起きます。

他の人達はどうやってるんだろうなぁ