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