CIが失敗する原因とは

Date2026/08/04 Last Modified2026/08/07

概要

Laravelの案件にて。
Github workflowsに、git pushしたときの自動テストを導入しました。
あるとき、ローカルでのテストが通っていたのにCIテストだけ失敗する状態になったので、その状況を調査しました。

よくあるミス

  1. ローカルファイルを参照している CSVサンプルをダウンロードさせる機能のテストで.gitignoreに指定しているファイルを参照していたという事例です。
    そもそもCSVサンプルをダウンロードさせるよりカラムを生成したほうが良い気もします。

  2. 画面表示に関するビルド不足 Actionsには標準でViteの環境がないので、ビルド済みファイルを上げるか、Vite環境を構築する必要がありました。
    ビルド済みファイルを上げると環境を作る必要はないですが、ファイル一式が重くなります。
    目的から考えてみると、ビルド後を見たいのではなくて、単にテキストが表示されているかを確認したかっただけなので、ビルドの結果を参照する必要はありませんでした。
    そのため、テストファイルに withoutVite()を追加することで対応できました。

  3. SQL構文の違いによるエラー ローカルではSQLiteを使っていて、CI環境ではMySQLを使っているという違いがありました。
    これにより一部の構文が使えなかったので、条件分岐させました。

SQLite: `insert or ignore into`  
MySQL: `insert ignore into`