ひでメモ

プログラムについて勉強したことを書きます。たぶん。

【Laravel】php artisan schema:dump でマイグレーションファイルを圧縮したらテストが早くなるか試してみた

結論

マイグレーションの圧縮をしても速度はほぼ変わりませんでした。
というかプロジェクトの CI 環境では遅くなりました…
もちろん、うちの環境では、という話なのでマイグレーションファイルの数や内容によっては早くなることも十分あると思います。
一例としてみていただければ…

やったこと

行ったのはphp artisan schema:dumpを実行して、マイグレーションファイルをひとつにまとめました。

readouble.com

このコマンドを実行するとdatabase以下にschemaというディレクトリが作成されそこにダンプファイルが保存されます。

マイグレーションファイルがまとまるので、追加したけど後で消したカラムなどはそもそも作られなくなる(そのカラムに関する記述がなくなる)ようです。
(なので、そういう無駄な処理がなくなった結果早くなるかな~と思ったのでしたが誤差でした😂)

pg_restore コマンドが必要

テストを流す際に躓いた点でほぼメインです。

皆さんご存知の通りテスト前にはマイグレーションが走り、テーブルを新たに作り直します。
ただ、マイグレーションの圧縮を行った場合、ダンプファイルがまず読み込まれることになります。

このダンプファイルを読み込むために Laravel 内部ではpg_restoreコマンドが呼ばれます ※ PostgreSQL の場合
当然、テストに使用している PHP のイメージにはそんなコマンドは含まれていませんでした。

今回は速度の検証だけだったので、暫定でテストを実行するのと同じコンテナに無理やりインストールさせました。
どのみち追加の処理が発生してしまうというわけです…

気になったのがpg_restoreartisanコマンドから呼ばれてしまうので、PHP(というかLaravel)が動くコンテナにpg_restoreがインストールされている必要があるということです。
(ダンプを読み込むだけであれば別のコンテナを立ち上げてとかできると思うのですが)
なにか良い方法があるんでしょうか。

感想

CI はちょっとでも早くしたいです…!
テストは件数もあってかなり時間を食っているので特に早くしたい…!
とりあえず並列テストを設定しなかったことに今更気づいてしまったので来週は試してみたいと思います。