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