Ga naar inhoud

NextPDF-backportintegratie

Alleen buildtooling, geen runtime-afhankelijkheid. Beheerders gebruiken dit pakket om de NextPDF-backportdistributies voor PHP (PHP: Hypertext Preprocessor) 7.4 en PHP 8.1 te produceren. Toepassingen mogen dit pakket nooit als runtime-afhankelijkheid toevoegen.

Er zijn twee afzonderlijke integratiepunten. Je integreert de builder-repository in de releasestroom van de buildhost. Een downstream-toepassing integreert alleen het geproduceerde pakket, nextpdf/backport, in haar afhankelijkheidsboom. De builder komt nooit in de afhankelijkheidsboom van een toepassing terecht.

Omdat de builder "type": "project" declareert in composer.json, behandel je deze als een project-repository en niet als een bibliotheek. Integreer hem door de repository te klonen en een dev-installatie uit te voeren, niet met composer require:

Terminal window
git clone https://github.com/nextpdf-labs/backport.git
cd backport
git checkout PHP74
composer install --prefer-dist --no-progress

Check de branch uit voor het doel dat je wilt produceren. Gebruik PHP74 (de standaard) voor de PHP 7.4-distributie met alleen core. Gebruik PHP81 voor de PHP 8.1-distributie met alle adapters. Geef --no-dev niet door. De build vereist de Rector-engine, PHPStan en PHPUnit; dit zijn dev-afhankelijkheden. Geverifieerd aan de hand van composer.json (type, require-dev) en het tweetakkenmodel in /integrations/backport/overview/.

De builder heeft geen framework-auto-discovery. Tijdens de build laadt scripts/build.php Rector en de drie aangepaste regels voor de abstract syntax tree via expliciete require_once-aanroepen en Composer PHP Standards Recommendation 4 (PSR-4)-autoloading. De volledige bootsequentie en bronmodule-discovery zijn gedocumenteerd in /integrations/backport/boot-and-discovery/.

Niet van toepassing. De builder is een command-line-interface (CLI)-tool zonder dependency-injection-container. Geverifieerd aan de hand van de repository-structuur en composer.jsonautoload.

De “publicatieconfiguratie” is geen afzonderlijk bestand. Het is de verzameling build-vlaggen en vaste pakketdefinities in scripts/adjust-composer.php:

  • Doeltoewijzing. --target=php81 produceert nextpdf/backport (constraint >=8.1 <8.5, vervangt core, adapters en compat-legacy) en, indien opgenomen, nextpdf/backport-pro. --target=php74 produceert nextpdf/backport (constraint >=7.4 <8.1, vervangt alleen nextpdf/core) en geen Pro.
  • Uitsluiting. --no-pro sluit het Pro-pakket uit bij het PHP 8.1-doel. Het PHP 7.4-doel sluit Pro en alle adapters per definitie uit.
  • Versie. De build schrijft --version (of de release-tag na verwijdering van de voorafgaande v) naar de gegenereerde composer.json en CHANGELOG.md.

Dit gedrag is geverifieerd aan de hand van scripts/build.php en scripts/adjust-composer.php (generatePublicComposer(), generateProComposer(), buildReplace()). De volledige vlaggenreferentie staat in /integrations/backport/configuration/.

Je integreert de builder in een releasestroom via de GitHub Actions-workflows in .github/workflows/. 0-ci.yml bewaakt elke wijziging op een permanente branch met PHPStan, de regeltests en een dry-run. build.yml produceert en publiceert de distributie wanneer het een source-release-repository-dispatch-event of een handmatige dispatch ontvangt. Het volledige operationele model — triggers, lanes, validatiematrix en de gedeelde release — is gedocumenteerd in /integrations/backport/production-usage/.

De releasepipeline is de integratie-smoke-test. Nadat de build is voltooid, schakelt de workflow de runner over naar de doel-PHP en voert php -l uit over de uitgegeven broncode. Vervolgens installeert en test de workflow het geproduceerde pakket over de validatiematrix (PHP 8.1–8.4 voor de PHP 8.1-lane, PHP 7.4 en 8.0 voor de PHP 7.4-lane). Een distributie die een doel-runtime afwijst, wordt niet gereleaset. Geverifieerd aan de hand van .github/workflows/build.yml (de syntaxiscontrole en de validate-*-jobs). Je kunt lokaal geproduceerde uitvoer op dezelfde manier smoke-testen met het Docker-commando dat de validatiefase afdrukt — zie /integrations/backport/quickstart/.

Het publieke oppervlak van de builder bestaat uit de CLI-orchestrator en de bijbehorende Composer-scriptaliassen, niet uit een bin/-executable.

IngangspuntVerwijst naarDoel
composer buildphp scripts/build.phpDe volledige build uitvoeren
composer build:dryphp scripts/build.php --dry-runEen dry-run van de build uitvoeren
composer testphpunitDe fixture-suites voor de regels uitvoeren
composer analysephpstan analyse rector/rules scripts --level=10De buildcode analyseren

Geverifieerd aan de hand van composer.jsonscripts. Het downstream-pakket stelt de oorspronkelijke application programming interface (API)-symbolen van NextPDF\ beschikbaar; de backport wijzigt ze niet. Het pakket vervangt de bronpakketten en autoloadt de samengevoegde boom via de enkele PSR-4-prefix.

  • /integrations/backport/overview/ — wat de builder is en wat hij produceert.
  • /integrations/backport/boot-and-discovery/ — bootsequentie en bronmodule-discovery.
  • /integrations/backport/install/ — installatie op de buildhost en downstream.
  • /integrations/backport/production-usage/ — de releasepipeline.