Я унаследовал проект Laravel 12, который использует GrumPHP для проверок качества перед фиксацией. Перехватчик перед фиксацией в настоящее время занимает 7-10 минут, что кажется чрезмерным для каждого коммита. PHPUnit должен отслеживать только измененные файлы, но похоже, что это часто каждый раз включает в себя большую часть модульных тестов. Я пытаюсь понять, нормально ли это/рекомендуется или есть лучший подход.
Технический стек
Код: Выделить всё
- Laravel 12 (PHP 8.3)
- phpro/grumphp-shim v2.12
- MySQL database (separate one for testing)
- Docker-based development environment
Перехватчик предварительной фиксации выполняет следующие задачи:
Код: Выделить всё
1. PHPUnit (full test suite, non-parallel)
2. PHPStan (static analysis at max level)
3. Psalm (static analysis with no cache)
4. PHP-CS-Fixer (code style checking)
5. YAML Lint
6. Composer validation
7. Git commit message validation (JIRA ticket enforcement)
8. Security checker (composer audit)
Код: Выделить всё
imports:
- { resource: vendor/phpro/symfony-conventions/grumphp-convention.yml }
parameters:
commit_project_names: "(MUND)"
run_psalm: true
phpunit.parallel: false
stop_on_failure: false
run_security_advisories: true
grumphp:
process_timeout: 600
tasks:
phpstan:
configuration: phpstan.neon.dist
use_grumphp_paths: false
phpunit:
always_execute: false # Only run on changed files
git_commit_message: ~
Из того, что я смог выяснить:
- миграция базы данных выполняется для каждого тестового класса
- каждая фиксация занимает более 7 дюймов (тайм-аут установлен на 10 дюймов)
Вопрос
является ли эта настройка излишней, ненужной или просто недостаточно хорошо настроенной для каждого коммита?
Я с радостью приветствую рекомендации и информацию по этому поводу!
Подробнее здесь: https://stackoverflow.com/questions/798 ... pplication
Мобильная версия