Continuous Integration für Erweiterungen
Diese Seite ist für Anwendungsentwickler, die jeden Push ihrer Erweiterung automatisch prüfen lassen möchten. Die
eigenen Workflows des Kernels in .github/workflows/ sind ein erprobtes Vorbild
(GitHub-Actions-Workflows).
Inhalt
Was die CI des Kernels tut
| Workflow | Prüft |
|---|---|
quality.yml | PHP- und JavaScript-Syntax geänderter Dateien, das Dateimanifest, Commit-Nachrichten, Code-Stil (Warnung), PHPStan |
phpunit.yml | PHPUnit auf PHP 8.1 bis 8.5 und einen Job mit MySQL und PostgreSQL |
performance.yml | einen Mikro-Benchmark gegen eine Baseline (nur Warnung) |
ci-health.yml | einen wöchentlichen Bericht über Erfolgsquoten und instabile Tests |
Ein Workflow für eine Erweiterung
# .github/workflows/ci.yml
name: CI
on: [push, pull_request]
permissions:
contents: read
jobs:
lint:
runs-on: ubuntu-latest
strategy:
matrix:
php: ['8.0', '8.1', '8.2', '8.3', '8.4', '8.5']
steps:
- uses: actions/checkout@v4
- uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
- run: find . -name '*.php' -not -path './vendor/*' -print0 | xargs -0 -n1 php -l
tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: shivammathur/setup-php@v2
with:
php-version: '8.3'
- run: composer install --no-interaction
- run: vendor/bin/phpunit tests/Prüfen Sie die Syntax auf jeder PHP-Version, die der Kernel unterstützt (8.0 bis 8.5, Anforderungen), denn Installationen laufen auf allen davon.
Tests gegen den Kernel
Tests, die Kernel-Klassen brauchen, laufen in einem Checkout von se7enxweb/exponential, in dessen extension/ Ihre
Erweiterung liegt: Checken Sie beides aus, führen Sie im Kernel composer install aus, kopieren oder verlinken Sie Ihre
Erweiterung, erzeugen Sie die Autoloads neu und führen Sie dann Ihre Tests mit dem Bootstrap aus der phpunit.xml des
Kernels aus. Halten Sie diese Tests nach Möglichkeit frei von Datenbankzugriffen
(PHPUnit-Tests ohne Datenbank).
Regeln
- Minimale Rechte:
permissions: contents: read; keinpull_request_target. - Ein Timeout pro Job.
- Versionen der Actions festlegen; bewusst aktualisieren.
- Keine Geheimnisse in Logs; Geheimnisse nur dort, wo ein Job sie wirklich braucht, und nie bei Pull Requests aus Forks.
- Eine rote CI blockiert das Release-Tag (Versionen und Releases).
Verwandte Seiten
- Anwendungen testen
- Qualitätsprüfungen
- Verhaltensänderungen der CI
- Freie Dokumentation: Diese Seite darf unter der GNU FDL 1.3 frei kopiert, übersetzt und verbessert werden.
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.