Lewati ke konten

Integrasi backport NextPDF

Ini hanya perkakas build, bukan dependensi runtime. Pemelihara menggunakan paket ini untuk menghasilkan distribusi backport NextPDF bagi PHP (PHP: Hypertext Preprocessor) 7.4 dan PHP 8.1. Aplikasi tidak boleh menambahkan paket ini sebagai dependensi runtime.

Ada dua titik integrasi yang berbeda. Anda mengintegrasikan repositori builder ke alur rilis host build. Aplikasi hilir hanya mengintegrasikan paket yang dihasilkan, nextpdf/backport, ke pohon dependensinya. Builder tidak pernah masuk ke pohon dependensi aplikasi.

Karena builder mendeklarasikan "type": "project" di composer.json, perlakukan builder sebagai repositori proyek, bukan pustaka. Integrasikan dengan meng-clone repositori dan menjalankan instalasi dev, bukan melalui composer require:

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

Checkout branch untuk target yang akan Anda hasilkan. Gunakan PHP74 (default) untuk distribusi PHP 7.4 yang hanya berisi core. Gunakan PHP81 untuk distribusi PHP 8.1 dengan semua adapter. Jangan menambahkan --no-dev. Build memerlukan engine Rector, PHPStan, dan PHPUnit; semuanya adalah dependensi dev. Hal ini diverifikasi terhadap composer.json (type, require-dev) dan model dua branch di /integrations/backport/overview/.

Builder tidak menyediakan penemuan otomatis framework. Saat build berjalan, scripts/build.php memuat Rector dan tiga aturan abstract syntax tree khusus melalui pemanggilan eksplisit require_once dan autoloading Composer PHP Standards Recommendation 4 (PSR-4). Urutan boot lengkap dan penemuan modul sumber didokumentasikan di /integrations/backport/boot-and-discovery/.

Tidak berlaku. Builder adalah perkakas command-line interface (CLI) tanpa container dependency injection. Hal ini diverifikasi terhadap struktur repositori dan composer.jsonautoload.

“Konfigurasi publish” bukan berkas tersendiri, melainkan kumpulan flag build dan definisi paket tetap di scripts/adjust-composer.php:

  • Peta target. --target=php81 menghasilkan nextpdf/backport (batasan >=8.1 <8.5, menggantikan core, adapter, dan compat-legacy) serta, jika disertakan, nextpdf/backport-pro. --target=php74 menghasilkan nextpdf/backport (batasan >=7.4 <8.1, hanya menggantikan nextpdf/core) dan tidak menyertakan Pro.
  • Pengecualian. --no-pro mengecualikan paket Pro pada target PHP 8.1. Sesuai rancangannya, target PHP 7.4 mengecualikan Pro dan semua adapter.
  • Versi. Build menuliskan --version (atau tag rilis setelah menghapus awalan v) ke dalam composer.json dan CHANGELOG.md yang dihasilkan.

Perilaku ini diverifikasi terhadap scripts/build.php dan scripts/adjust-composer.php (generatePublicComposer(), generateProComposer(), buildReplace()). Referensi lengkap untuk flag tersedia di /integrations/backport/configuration/.

Anda mengintegrasikan builder ke alur rilis melalui workflow GitHub Actions di .github/workflows/. 0-ci.yml memvalidasi setiap perubahan pada masing-masing branch permanen dengan PHPStan, tes aturan, dan dry-run. build.yml menghasilkan dan merilis distribusi saat menerima event repository-dispatch source-release atau dispatch manual. Model operasi lengkap — pemicu, lane, matriks validasi, dan rilis bersama — didokumentasikan di /integrations/backport/production-usage/.

Pipeline rilis berfungsi sebagai smoke test integrasi. Setelah build selesai, workflow mengalihkan runner ke PHP target dan menjalankan php -l pada seluruh sumber yang dihasilkan. Selanjutnya, workflow memasang dan menguji paket yang dihasilkan di seluruh matriks validasi (PHP 8.1–8.4 untuk lane PHP 8.1, PHP 7.4 dan 8.0 untuk lane PHP 7.4). Distribusi yang ditolak oleh runtime target tidak akan mencapai rilis. Hal ini diverifikasi terhadap .github/workflows/build.yml (job syntax-check dan validate-*). Anda dapat melakukan smoke test pada keluaran yang dihasilkan secara lokal dengan cara yang sama menggunakan perintah Docker yang dicetak oleh tahap validasi — lihat /integrations/backport/quickstart/.

Antarmuka publik builder adalah orkestrator CLI dan alias skrip Composer-nya, bukan executable bin/.

Titik masukDiselesaikan menjadiTujuan
composer buildphp scripts/build.phpJalankan build penuh
composer build:dryphp scripts/build.php --dry-runJalankan build dry-run
composer testphpunitJalankan suite fixture aturan
composer analysephpstan analyse rector/rules scripts --level=10Analisis kode build

Hal ini diverifikasi terhadap composer.jsonscripts. Paket hilir mengekspos simbol application programming interface (API) NextPDF\ asli yang tidak diubah oleh backport. Paket ini menggantikan paket sumber dan melakukan autoload pada pohon yang digabungkan melalui prefiks PSR-4 tunggal.

  • /integrations/backport/overview/ — apa itu builder dan apa yang dihasilkannya.
  • /integrations/backport/boot-and-discovery/ — urutan boot dan penemuan sumber.
  • /integrations/backport/install/ — pemasangan host build dan hilir.
  • /integrations/backport/production-usage/ — pipeline rilis.