Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,075 of 9,075 pages
About the help in other languages
All help pages

CI und das Nachstellen einer roten Prüfung

Die Continuous Integration des Exponential-Repositorys aus der Sicht eines PHP-Entwicklers - die Workflows Quality, PHPUnit, Performance und CI health, was blockiert, wie ein Pull Request getestet wird und der lokale…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/php-developers/ci-and-reproducing-a-red-check.md

On this page

This page is a translation. Read the English original

CI und das Nachstellen einer roten Prüfung

Diese Seite richtet sich an PHP-Entwickler, deren Commit oder Pull Request an se7enxweb/exponential eine rote Prüfung bekommen hat. Sie erklärt, was läuft, was blockiert, und nennt den Befehl, der jeden fehlgeschlagenen Schritt auf Ihrer Maschine nachstellt. Die vollständige Referenz ist Continuous Integration: die Workflows.

Inhalt

  1. Die Workflows
  2. Den fehlgeschlagenen Schritt finden
  3. Lokal nachstellen
  4. Warum CI und Ihre Maschine sich uneinig sind
  5. Pull Requests

Die Workflows

WorkflowLäuftJobsBlockiert
Quality (quality.yml)bei jedem Push auf main und jedem Pull RequestSyntax, Manifest, Commit-Nachrichten, Code-Stil (PHP 8.3); PHPStan (8.3); Tests der Code-Stil-Sniffs (8.4); PHP-8.0-Syntax und Bootja; der Code-Stil ist eine Warnung, das Manifest bei Pull Requests eine Warnung
PHPUnit (phpunit.yml)bei jedem Push und Pull RequestPHPUnit ohne Datenbank unter PHP 8.1 bis 8.5; Datenbanktests auf MySQL 8.0 und PostgreSQL 15 (PHP 8.3)ja
Performance (performance.yml)Änderungen an PHP, Templates, Einstellungen oder dem BenchmarkMikro-Benchmark (PHP 8.5) gegen tests/benchmark/baseline.jsonnein
CI health (ci-health.yml)montags und von Handein Bericht über Erfolgsquoten und instabile Testsnein

Den fehlgeschlagenen Schritt finden

gh run list -R se7enxweb/exponential --limit 20
gh run view <run id> -R se7enxweb/exponential --log-failed      # only the failed steps' log
gh run rerun <run id> -R se7enxweb/exponential --failed         # run only the failed jobs again

Lokal nachstellen

Führen Sie es im Wurzelverzeichnis eines Checkouts desselben Commits aus; BASE ist für einen Pull Request origin/main.

Fehlgeschlagener SchrittBefehl
PHP-Syntax geänderter Dateiengit diff --name-only --diff-filter=ACMR $BASE HEAD -- '*.php' | xargs -r -n1 php -l
JavaScript-Syntaxgit diff --name-only --diff-filter=ACMR $BASE HEAD -- '*.js' ':!*.min.js' | xargs -r -n1 node --check
Datei-Manifestphp bin/php/checkmanifest.php --all, beheben mit make manifest-fix
Commit-Nachrichtensh .githooks/check-commit-range $BASE HEAD
Code-Stilmake phpcs BASE=$BASE
PHPStaneinmal make devtools, dann make phpstan
Tests der Code-Stil-Sniffsvendor/bin/phpunit --testsuite quality --no-coverage (PHP 8.4)
PHP-8.0-Syntax jeder Dateimake lint80-all PHP80=/path/to/php8.0
produktive Installation unter PHP 8.0in einem sauberen Checkout mit PHP 8.0: composer install --no-dev --prefer-dist
Boot-Smoke-Testphp bin/php/ezexec.php tests/bin/bootsmoke.php mit PHP 8.0
PHPUnitphp vendor/bin/phpunit <the failed test file>, dann php vendor/bin/phpunit
Datenbanktestsphp -d date.timezone=America/Los_Angeles tests/runtests.php --dsn mysql://[email protected]/testdb --db-per-test gegen eine Wegwerf-Datenbank
Mikro-Benchmarkphp bin/php/benchmark.php micro --baseline=tests/benchmark/baseline.json --all-checks mit ausgeschaltetem OPcache

Führen Sie den Abhängigkeitsschritt der PHPUnit-CI (composer update auf einer kopierten composer.json) niemals innerhalb einer installierten Site aus: Er schreibt vendor/ neu.

Warum CI und Ihre Maschine sich uneinig sind

SituationÜbliche UrsacheWas zu tun ist
ein Test besteht lokal, schlägt in der CI fehlder Test liest etwas aus Ihrer Installation: settings/override, eine Datenbank, einen Cache in var/führen Sie ihn in einem frischen Klon nur mit installiertem vendor/ aus
ein Test besteht allein, schlägt im ganzen Lauf fehlgemeinsamer Zustand mit einem anderen Test: ein statischer Cache, ein im Prozess gesetzter INI-Wert, eine Datei unter var/führen Sie die beiden Dateien zusammen aus; setzen Sie den Zustand in tearDown() zurück
jeder PHPUnit-Zweig schlägt bei der Installation fehlein Release einer Abhängigkeit hat die Auflösung geändert, oder ein neu gepinntes Paket ist noch nicht auf Packagistwarten Sie auf das Release auf Packagist; prüfen Sie die Einschränkung
nur der Zweig PHP 8.1 schlägt fehleine API von PHPUnit 10.5 oder ein Verhalten von PHP 8.1lesen Sie das Log des Zweigs; vermeiden Sie neuere PHPUnit-APIs
nur php80 schlägt fehlSyntax oder eine Funktion neuer als 8.0, oder eine Abhängigkeit, die 8.1 brauchtCode schreiben, der unter PHP 8.0 läuft

Die Jobs setzen COMPOSER_ROOT_VERSION=dev-main, weil ein Pull Request als losgelöster Merge-Commit ausgecheckt wird, bei dem Composer das Wurzelpaket sonst dev-<sha> nennen würde und Pakete, die se7enxweb/exponential: ^6.0.14 verlangen, nicht installiert werden könnten.

Pull Requests

  • Ein Pull Request wird als in main gemergt getestet. Ein Branch, der grün war, kann rot werden, wenn sich main bewegt: Mergen Sie main in den Branch und pushen Sie erneut.
  • Ein Pull Request, der mit main in Konflikt steht, bekommt überhaupt keine Prüfungen; lösen Sie den Konflikt.
  • Ein neuer Push auf den Branch bricht den Lauf ab, den er ersetzt; ein abgebrochener Lauf ist kein Fehlschlag.
  • Composer-Installationen werden bis zu dreimal versucht; jeder Job hat eine Zeitgrenze von 20 oder 30 Minuten.

Verwandte Seiten

Werden Sie Exponential-Partner

Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x