Что это 🔍
Laravel Project Verification — это многофазный пайплайн проверки Laravel-проектов, который объединяет контроль окружения, линтинг, статический анализ, тесты с покрытием, аудит безопасности, проверку миграций и подготовку к деплою. Навык предназначен для автоматизации валидации перед Pull Request'ами, после крупных изменений или непосредственно перед выкладкой на staging/production.
Как работает ⚙️
Пайплайн состоит из семи последовательных фаз. Каждая фаза опирается на успешное прохождение предыдущей — если что-то падает, процесс останавливается.
Фаза 1: Проверка окружения 🖥️
Первым делом проверяются версии PHP (php -v), Composer (composer --version) и фреймворка (php artisan --version). Затем:
- Убеждаемся, что файл
.env существует и содержит все необходимые ключи.
- Для production окружения
APP_DEBUG должен быть false, а APP_ENV — соответствовать целевому окружению (production, staging).
- Если используется Laravel Sail, команды выполняются через
./vendor/bin/sail.
Фаза 1.5: Composer и автозагрузка 📦
Выполняется composer validate (проверка composer.json) и composer dump-autoload -o (оптимизация автозагрузчика).
Фаза 2: Линтинг и статический анализ ✨
Запускаются vendor/bin/pint --test (Laravel Pint) для проверки стиля кода и vendor/bin/phpstan analyse для статического анализа. Если проект использует Psalm вместо PHPStan, запускается vendor/bin/psalm.
Фаза 3: Тесты и покрытие 🧪
Выполняется php artisan test (или XDEBUG_MODE=coverage php artisan test --coverage для получения отчёта о покрытии). Тесты должны быть зелёными, иначе дальнейшие фазы не запускаются.
Фаза 4: Безопасность 🛡️
composer audit проверяет зависимости на известные уязвимости. Если найдены проблемы — пайплайн останавливается.
Фаза 5: Миграции базы данных 🗄️
Имитация миграций через php artisan migrate --pretend и проверка статуса php artisan migrate:status. Особое внимание уделяется деструктивным миграциям (удаление полей/таблиц), их нужно проверять вручную. Также проверяется, что файлы миграций следуют формату Y_m_d_His_* и имеют понятные имена, а 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). Если используется Laravel Horizon, проверяется его статус (php artisan horizon:status). Для проверки работоспособности очереди (только на staging) можно отправить тестовый job и обработать его через queue:work --once.
Когда использовать ✅
- Перед открытием Pull Request'а в Laravel-проекте.
- После крупного рефакторинга или обновления зависимостей.
- Перед деплоем на staging или production.
- В CI/CD как единый пайплайн проверки качества.
Важно знать ⚠️
- Пайплайн последовательный: если одна из фаз завершается с ошибкой, процесс прерывается. Это позволяет быстро выявить проблему на раннем этапе.
- Для локальной разработки с Laravel Sail используйте команды через
./vendor/bin/sail.
- Фаза 7 с тестовым job'ом предназначена только для non-production окружений.
- В навыке приведены два типовых сценария: минимальный (все фазы, но без покрытия) и CI-стиль (с покрытием и полным набором). Вы можете адаптировать последовательность под свой проект.
Комментарии
Комментариев пока нет. Будьте первым.