Verification loop for Laravel projects: env checks, linting, static analysis, tests with coverage, security scans, and deployment readiness.
在发起 PR 前、进行重大更改后以及部署前运行。
php -v
composer --version
php artisan --version
.env 文件存在且包含必需的键APP_DEBUG=falseAPP_ENV 与目标部署环境匹配(production、)staging如果在本地使用 Laravel Sail:
./vendor/bin/sail php -v
./vendor/bin/sail artisan --version
composer validate
composer dump-autoload -o
vendor/bin/pint --test
vendor/bin/phpstan analyse
如果你的项目使用 Psalm 而不是 PHPStan:
vendor/bin/psalm
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
composer audit
php artisan migrate --pretend
php artisan migrate:status
Y_m_d_His_* 格式(例如,2025_03_14_154210_create_orders_table.php)并清晰地描述变更down() 方法,避免在没有明确备份的情况下造成不可逆的数据丢失php artisan optimize:clear
php artisan config:cache
php artisan route:cache
php artisan view:cache
storage/ 和 bootstrap/cache/ 目录可写php artisan schedule:list
php artisan queue:failed
如果使用了 Horizon:
php artisan horizon:status
如果 queue:monitor 命令可用,可以用它来检查积压作业而无需处理它们:
php artisan queue:monitor default --max=100
主动验证(仅限预生产环境):向一个专用队列分发一个无操作作业,并运行一个单独的工作者来处理它(确保配置了一个非 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