laravel-verification

laravel-verification

热门

Laravel 项目的验证循环:环境检查、代码规范检查、静态分析、带覆盖率的测试、安全扫描和部署就绪检查。

23万Star
3.5万Fork
更新于 2026/7/19
SKILL.md
readonly只读
name
laravel-verification
description

Laravel 项目的验证循环:环境检查、代码规范检查、静态分析、带覆盖率的测试、安全扫描和部署就绪检查。

Laravel 验证循环

在 PR 之前、重大更改之后以及部署前运行。

何时使用

  • 在打开 Laravel 项目的拉取请求之前
  • 在重大重构或依赖升级之后
  • 预部署验证(针对预发布或生产环境)
  • 运行完整的代码规范检查 -> 测试 -> 安全 -> 部署就绪流水线

工作原理

  • 按顺序依次执行各阶段,从环境检查到部署就绪,每一层都基于前一层构建。
  • 环境和 Composer 检查是所有后续步骤的门槛;如果失败则立即停止。
  • 在运行完整测试和覆盖率之前,应确保代码规范检查/静态分析通过。
  • 安全检查和迁移审查在测试之后进行,以便在数据或发布步骤之前验证行为。
  • 构建/部署就绪以及队列/调度检查是最终门槛;任何失败都会阻止发布。

阶段 1:环境检查

php -v
composer --version
php artisan --version
  • 验证 .env 文件存在且包含必需的键
  • 确认生产环境中 APP_DEBUG=false
  • 确认 APP_ENV 与目标部署环境匹配(productionstaging

如果在本地使用 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

如果项目使用 Psalm 而非 PHPStan:

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

主动验证(仅限预发布环境):向专用队列分发一个空操作任务,并运行单个工作者处理它(确保配置了非 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