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
작업이 예상된 부작용(로그 항목, 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