Ga naar inhoud

NextPDF Backport Builder-snelstart

Buildtool — geen runtime-afhankelijkheid. Voer deze handleiding uit op een onderhouds- of continuous-integration-host (CI-host). Een downstreamproject gebruikt het archief dat je produceert. Deze stappen worden nooit op een applicatieserver uitgevoerd.

Je voert drie opdrachten uit. Voer eerst de dry-run uit om te bevestigen dat de pijplijn correct is aangesloten, zonder bestanden te wijzigen. Voer vervolgens een volledige PHP 8.1-build uit. Voer daarna een volledige PHP 7.4-build uit. Elke stap gebruikt één opdracht, ondersteund door een Composer-script of een gedocumenteerde scripts/build.php-aanroep.

  • Een buildhost op PHP >=8.4 <9.0, met de buildafhankelijkheden geïnstalleerd (composer install, zonder --no-dev). Zie /integrations/backport/install/.
  • De bronrepository’s uitgecheckt als gelijkwaardige mappen onder één hoofdmap voor de broncode. De PHP 8.1-build leest nextpdf, nextpdf-Artisan, nextpdf-compat-legacy, nextpdf-Laravel, nextpdf-Symfony, nextpdf-CodeIgniter en nextpdf-Pro (voor Pro). De PHP 7.4-build leest alleen nextpdf. Geverifieerd aan de hand van scripts/merge-sources.php.

De dry-run voert elke fase in alleen-rapportagemodus uit. De samenvoegfase toont de bestanden die die zou kopiëren. De opdracht meldt dat Rector zou worden uitgevoerd, maar voert Rector niet uit. De fasen voor Composer-generatie, het kopiëren van assets en validatie tonen hun voorgenomen acties. Er wordt niets weggeschreven. Voer dit als eerste uit, omdat dit de snelste manier is om je broncode-indeling en vlaggen te bevestigen.

Terminal window
composer build:dry

composer build:dry verwijst naar php scripts/build.php --dry-run. Geverifieerd aan de hand van composer.jsonscripts en scripts/build.php (de dryRun-tak in elke fase). Met de standaardvlaggen is het doel php81 en gebruikt de hoofdmap voor de broncode de standaardwaarde van het script. Je kunt beide waarden overschrijven, zoals getoond in stap 2.

Als de dry-run een ontbrekende bronrepository meldt, stopt deze onmiddellijk en noemt die repository. Herstel de broncode-indeling voordat je verdergaat. Zie /integrations/backport/troubleshooting/.

De PHP 8.1-build voert meerdere stappen op volgorde uit. De build voegt core samen met de framework-adapters en de tcpdf-compatibiliteitslaag. De build voert de Rector-configuratie in één doorloop uit. Daarna genereert die nextpdf/backportcomposer.json, kopieert de licentie, schrijft CHANGELOG.md en telt de gegenereerde PHP-bestanden.

Terminal window
php scripts/build.php \
--version=2.0.0 \
--source-dir=/path/to/sources \
--output-dir=./output

Geverifieerd aan de hand van het toegangspunt van de command-line interface (CLI) van scripts/build.php. De vijf fasen worden op volgorde uitgevoerd: bronnen samenvoegen, Rector-downgrade uitvoeren, composer.json genereren, statische assets kopiëren en uitvoer valideren. Elke fase toont een vinkje bij succes. De eerste fase die mislukt, stopt de build en toont de bijbehorende foutmelding. Voeg --no-pro toe om Pro uit te sluiten.

Als de build slaagt, toont de orchestrator de verstreken tijd en het uitvoerpad. Wanneer Pro is opgenomen, toont die ook het Pro-uitvoerpad. De uitvoermap bevat dan src/, tests/, een gegenereerde composer.json die de replace-mapping en de polyfill-vereisten declareert, LICENSE en CHANGELOG.md.

De PHP 7.4-build is alleen voor core en gebruikt de pijplijn met twee doorlopen. De build voert de enum-voorverwerking uit, wist de cache, past de correcties na Rector toe en voert vervolgens de volledige downgrade uit.

Terminal window
php scripts/build.php \
--version=2.0.0 \
--source-dir=/path/to/sources \
--output-dir=./output-php74 \
--target=php74

Geverifieerd aan de hand van scripts/build.php. Hiermee dwingt --target=php74 af dat alleen core wordt gebouwd, schakelt Pro uit en laat runRector() het pad met twee doorlopen kiezen. De gegenereerde composer.json bevat de beperking >=7.4 <8.1. Die vervangt alleen nextpdf/core en voegt de PHP 8.0- en 8.1-polyfills toe bovenop de 8.2–8.5-polyfills.

De validatiefase telt de PHP-bestanden in output/src en mislukt als dat aantal nul is. De fase voert lokaal geen syntaxiscontrole uit. De lokale interpreter is de moderne PHP van de buildhost, niet de doelruntime. In plaats daarvan toont de fase de Docker-opdracht om tegen de echte doelruntime te valideren. Geverifieerd aan de hand van scripts/build.php (validateOutput()).

Voer de syntaxiscontrole met de doel-PHP uit om volledig te valideren. De releaseworkflow volgt hetzelfde pad. Die voert een syntaxiscontrole van de uitvoer uit op PHP 8.1 (of PHP 7.4) en installeert en test die vervolgens in de volledige ondersteuningsmatrix. Zie /integrations/backport/production-usage/.

ArtefactGebouwd doorBeperkingVervangt
nextpdf/backport (PHP 8.1)Stap 2>=8.1 <8.5core + artisan + laravel + symfony + codeigniter + compat-legacy
nextpdf/backport-pro (PHP 8.1)Stap 2, wanneer Pro is opgenomen>=8.1 <8.5nextpdf/pro
nextpdf/backport (PHP 7.4)Stap 3>=7.4 <8.1nextpdf/core

Geverifieerd aan de hand van scripts/adjust-composer.php.

  • /integrations/backport/production-usage/ — Koppel dit aan de event-gestuurde releaseworkflow.
  • /integrations/backport/configuration/ — De referentie voor de regels en vlaggen achter deze opdrachten.
  • /integrations/backport/troubleshooting/ — Elke fasefout en wat die betekent.