Laravel 検証ループ
PR 前、大きな変更後、デプロイ前に実行します。
使用タイミング
- Laravel プロジェクトのプルリクエストを出す前
- 大規模なリファクタリングや依存関係のアップグレード後
- ステージングまたは本番環境へのデプロイ前検証
- リンター → テスト → セキュリティ → デプロイ準備の完全パイプラインを実行する場合
動作の仕組み
- 環境チェックからデプロイ準備までを順次実行し、各レイヤーが前のレイヤーに基づいて構築されます。
- 環境と Composer のチェックはその後のすべての処理をゲート制御し、失敗した場合は即座に停止します。
- リンター/静的解析は、完全なテストとカバレッジを実行する前にクリーンである必要があります。
- セキュリティとマイグレーションのレビューはテスト後に行われるため、データやリリース手順の前に動作を検証します。
- ビルド/デプロイ準備とキュー/スケジューラのチェックは最終ゲートであり、いずれかの失敗はリリースをブロックします。
フェーズ 1: 環境チェック
php -v
composer --version
php artisan --version
.envが存在し、必要なキーが存在することを確認する- 本番環境では
APP_DEBUG=falseを確認する APP_ENVが対象のデプロイ環境(production、staging)と一致することを確認する
Laravel Sail をローカルで使用している場合:
./vendor/bin/sail php -v
./vendor/bin/sail artisan --version
フェーズ 1.5: Composer とオートロード
composer validate
composer dump-autoload -o
フェーズ 2: リンターと静的解析
vendor/bin/pint --test
vendor/bin/phpstan analyse
PHPStan の代わりに Psalm を使用している場合:
vendor/bin/psalm
フェーズ 3: テストとカバレッジ
php artisan test
カバレッジ(CI 用):
XDEBUG_MODE=coverage php artisan test --coverage
CI の例(フォーマット → 静的解析 → テスト):
vendor/bin/pint --test
vendor/bin/phpstan analyse
XDEBUG_MODE=coverage php artisan test --coverage
フェーズ 4: セキュリティと依存関係チェック
composer audit
フェーズ 5: データベースとマイグレーション
php artisan migrate --pretend
php artisan migrate:status
- 破壊的なマイグレーションは注意深くレビューする
- マイグレーションファイル名が
Y_m_d_His_*(例:2025_03_14_154210_create_orders_table.php)に従い、変更内容を明確に説明していることを確認する - ロールバックが可能であることを確認する
down()メソッドを検証し、明示的なバックアップなしに不可逆的なデータ損失が発生しないようにする
フェーズ 6: ビルドとデプロイ準備
php artisan optimize:clear
php artisan config:cache
php artisan route:cache
php artisan view:cache
- 本番構成でキャッシュウォームアップが成功することを確認する
- キューワーカーとスケジューラが設定されていることを確認する
- 対象環境で
storage/とbootstrap/cache/が書き込み可能であることを確認する
フェーズ 7: キューとスケジューラのチェック
php artisan schedule:list
php artisan queue:failed
Horizon を使用している場合:
php artisan horizon:status
queue:monitor が利用可能な場合は、ジョブを処理せずにバックログを確認するために使用します:
php artisan queue:monitor default --max=100
アクティブな検証(ステージングのみ):専用キューに no-op ジョブをディスパッチし、単一のワーカーで処理します(sync 以外のキュー接続が設定されていることを確認してください)。
php artisan tinker --execute="dispatch((new App\Jobs\QueueHealthcheck())->onQueue('healthcheck'))"
php artisan queue:work --once --queue=healthcheck
ジョブが期待される副作用(ログエントリ、ヘルスチェックテーブル行、またはメトリック)を生成したことを確認します。
テストジョブの処理が安全な非本番環境でのみ実行してください。
例
最小フロー:
php -v
composer --version
php artisan --version
composer validate
vendor/bin/pint --test
vendor/bin/phpstan analyse
php artisan test
composer audit
php artisan migrate --pretend
php artisan config:cache
php artisan queue:failed
CI スタイルのパイプライン:
composer validate
composer dump-autoload -o
vendor/bin/pint --test
vendor/bin/phpstan analyse
XDEBUG_MODE=coverage php artisan test --coverage
composer audit
php artisan migrate --pretend
php artisan optimize:clear
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan schedule:list