Laravel-Verifikationsschleife
Vor Pull-Requests, nach größeren Änderungen und vor dem Deployment ausführen.
Wann verwenden
- Vor dem Öffnen eines Pull-Requests für ein Laravel-Projekt
- Nach größeren Refactorings oder Abhängigkeitsupgrades
- Pre-Deployment-Verifikation für Staging oder Produktion
- Ausführung der gesamten Lint -> Test -> Sicherheit -> Deployment-Bereitschaft-Pipeline
Funktionsweise
- Führt Phasen sequenziell von Umgebungsprüfungen bis zur Deployment-Bereitschaft aus, sodass jede Ebene auf der vorherigen aufbaut.
- Umgebungs- und Composer-Prüfungen sperren alles andere; sofort anhalten, wenn sie fehlschlagen.
- Linting/statische Analyse sollten sauber sein, bevor vollständige Tests und Coverage ausgeführt werden.
- Sicherheits- und Migrationsüberprüfungen erfolgen nach den Tests, damit Sie das Verhalten vor Daten- oder Release-Schritten verifizieren.
- Build-/Deployment-Bereitschaft und Queue-/Scheduler-Prüfungen sind die letzten Tore; jeder Fehler blockiert das Release.
Phase 1: Umgebungsprüfungen
php -v
composer --version
php artisan --version
- Überprüfen, ob
.envvorhanden ist und erforderliche Schlüssel existieren - Bestätigen, dass
APP_DEBUG=falsefür Produktionsumgebungen - Bestätigen, dass
APP_ENVdem Ziel-Deployment (production,staging) entspricht
Wenn lokal Laravel Sail verwendet wird:
./vendor/bin/sail php -v
./vendor/bin/sail artisan --version
Phase 1.5: Composer und Autoload
composer validate
composer dump-autoload -o
Phase 2: Linting und statische Analyse
vendor/bin/pint --test
vendor/bin/phpstan analyse
Wenn Ihr Projekt Psalm anstelle von PHPStan verwendet:
vendor/bin/psalm
Phase 3: Tests und Coverage
php artisan test
Coverage (CI):
XDEBUG_MODE=coverage php artisan test --coverage
CI-Beispiel (Format -> statische Analyse -> Tests):
vendor/bin/pint --test
vendor/bin/phpstan analyse
XDEBUG_MODE=coverage php artisan test --coverage
Phase 4: Sicherheits- und Abhängigkeitsprüfungen
composer audit
Phase 5: Datenbank und Migrationen
php artisan migrate --pretend
php artisan migrate:status
- Destruktive Migrationen sorgfältig prüfen
- Sicherstellen, dass Migrationsdateinamen dem Schema
Y_m_d_His_*folgen (z. B.2025_03_14_154210_create_orders_table.php) und die Änderung klar beschreiben - Sicherstellen, dass Rollbacks möglich sind
down()-Methoden überprüfen und irreversiblen Datenverlust ohne explizite Backups vermeiden
Phase 6: Build- und Deployment-Bereitschaft
php artisan optimize:clear
php artisan config:cache
php artisan route:cache
php artisan view:cache
- Sicherstellen, dass Cache-Warmups in der Produktionskonfiguration erfolgreich sind
- Überprüfen, ob Queue-Worker und Scheduler konfiguriert sind
- Bestätigen, dass
storage/undbootstrap/cache/in der Zielumgebung beschreibbar sind
Phase 7: Queue- und Scheduler-Prüfungen
php artisan schedule:list
php artisan queue:failed
Wenn Horizon verwendet wird:
php artisan horizon:status
Wenn queue:monitor verfügbar ist, damit den Rückstau prüfen, ohne Jobs zu verarbeiten:
php artisan queue:monitor default --max=100
Aktive Verifikation (nur Staging): Einen No-Op-Job in eine dedizierte Queue senden und einen einzelnen Worker ausführen, um ihn zu verarbeiten (stellen Sie sicher, dass eine Nicht-sync-Queue-Verbindung konfiguriert ist).
php artisan tinker --execute="dispatch((new App\\Jobs\\QueueHealthcheck())->onQueue('healthcheck'))"
php artisan queue:work --once --queue=healthcheck
Überprüfen, ob der Job den erwarteten Nebeneffekt erzeugt hat (Logeintrag, Tabellenzeile im Healthcheck oder Metrik).
Dies nur in Nicht-Produktionsumgebungen ausführen, in denen die Verarbeitung eines Test-Jobs sicher ist.
Beispiele
Minimaler Ablauf:
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-ähnliche Pipeline:
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