การผสานการทำงานของ NextPDF backport
เป็นเครื่องมือสำหรับการ build เท่านั้น ไม่ใช่ dependency ของรันไทม์ ผู้ดูแลใช้แพ็กเกจนี้เพื่อสร้างชุดแจกจ่าย backport ของ NextPDF สำหรับ PHP (PHP: Hypertext Preprocessor) 7.4 และ PHP 8.1 แอปพลิเคชันต้องไม่เพิ่มแพ็กเกจนี้เป็น dependency ของรันไทม์โดยเด็ดขาด
ภาพรวมโดยสังเขป
หัวข้อที่มีชื่อว่า “ภาพรวมโดยสังเขป”มีจุดผสานการทำงานที่แยกจากกันสองจุด คุณผสานรีโพซิทอรีของตัวสร้างเข้ากับกระแสงานการรีลีสของ โฮสต์สำหรับการ build ส่วน แอปพลิเคชันปลายทาง จะผสานเฉพาะแพ็กเกจที่สร้างขึ้น คือ nextpdf/backport เข้าในแผนผัง dependency ของตนเท่านั้น ตัวสร้างจะไม่เข้าไปอยู่ในแผนผัง dependency ของแอปพลิเคชันโดยเด็ดขาด
การติดตั้ง (เฉพาะโฮสต์สำหรับการ build)
หัวข้อที่มีชื่อว่า “การติดตั้ง (เฉพาะโฮสต์สำหรับการ build)”เนื่องจากตัวสร้างประกาศ "type": "project" ใน composer.json จึงควรปฏิบัติต่อตัวสร้างเหมือนรีโพซิทอรีของโปรเจกต์ ไม่ใช่ไลบรารี ให้ผสานโดยการ clone รีโพซิทอรีและรันการติดตั้งแบบ dev ไม่ใช่ผ่าน composer require:
git clone https://github.com/nextpdf-labs/backport.gitcd backportgit checkout PHP74composer install --prefer-dist --no-progressเช็คเอาต์แบรนช์ให้ตรงกับเป้าหมายที่คุณวางแผนจะสร้าง ใช้ PHP74 (ค่าเริ่มต้น) สำหรับชุดแจกจ่ายเฉพาะ core บน PHP 7.4 และใช้ PHP81 สำหรับชุดแจกจ่ายบน PHP 8.1 ที่มี adapter ครบทุกตัว อย่าส่ง --no-dev เพราะการ build ต้องใช้เอนจิน Rector, PHPStan และ PHPUnit ซึ่งเป็น dependency แบบ dev ตรวจสอบยืนยันได้จาก composer.json (type, require-dev) และโมเดลแบบสองแบรนช์ใน /integrations/backport/overview/
การบูตและการค้นหาอัตโนมัติ
หัวข้อที่มีชื่อว่า “การบูตและการค้นหาอัตโนมัติ”ตัวสร้างไม่มีการค้นหาอัตโนมัติแบบเฟรมเวิร์ก ในเวลา build นั้น scripts/build.php จะโหลด Rector และกฎ abstract syntax tree แบบกำหนดเองทั้งสามข้อผ่านการเรียก require_once โดยตรง รวมถึงการ autoload แบบ Composer PHP Standards Recommendation 4 (PSR-4) ลำดับการบูตทั้งหมดและการค้นหาโมดูลของซอร์สมีบันทึกไว้ใน /integrations/backport/boot-and-discovery/
การ binding ของคอนเทนเนอร์
หัวข้อที่มีชื่อว่า “การ binding ของคอนเทนเนอร์”ไม่เกี่ยวข้อง ตัวสร้างเป็นเครื่องมือแบบ command-line interface (CLI) ที่ไม่มีคอนเทนเนอร์สำหรับ dependency injection ตรวจสอบยืนยันได้จากโครงสร้างรีโพซิทอรีและ composer.jsonautoload
การกำหนดค่าการเผยแพร่
หัวข้อที่มีชื่อว่า “การกำหนดค่าการเผยแพร่”“การกำหนดค่าการเผยแพร่” ไม่ใช่ไฟล์แยกต่างหาก แต่เป็นชุดแฟล็กสำหรับการ build และนิยามแพ็กเกจแบบตายตัวใน scripts/adjust-composer.php:
- แผนที่เป้าหมาย
--target=php81สร้างnextpdf/backport(ข้อกำหนด>=8.1 <8.5แทนที่ core ชุด adapter และ compat-legacy) และเมื่อรวมไว้ด้วยจะสร้างnextpdf/backport-proส่วน--target=php74สร้างnextpdf/backport(ข้อกำหนด>=7.4 <8.1แทนที่เฉพาะnextpdf/core) และไม่มี Pro - การยกเว้น
--no-proยกเว้นแพ็กเกจ Pro บนเป้าหมาย PHP 8.1 โดยเชิงโครงสร้างแล้ว เป้าหมาย PHP 7.4 จะยกเว้น Pro และ adapter ทั้งหมด - เวอร์ชัน การ build จะเขียน
--version(หรือแท็กรีลีสหลังจากตัดอักษรvนำหน้าออก) ลงในไฟล์composer.jsonและCHANGELOG.mdที่สร้างขึ้น
พฤติกรรมนี้ได้รับการตรวจสอบยืนยันกับ scripts/build.php และ scripts/adjust-composer.php (generatePublicComposer(), generateProComposer(), buildReplace()) เอกสารอ้างอิงแฟล็กฉบับสมบูรณ์อยู่ที่ /integrations/backport/configuration/
การผสานการทำงานกับกระแสงานการรีลีส
หัวข้อที่มีชื่อว่า “การผสานการทำงานกับกระแสงานการรีลีส”คุณผสานตัวสร้างเข้ากับกระแสงานการรีลีสผ่านกระแสงาน GitHub Actions ใน .github/workflows/ โดย 0-ci.yml ทำหน้าที่เป็นเกตตรวจทุกการเปลี่ยนแปลงในแต่ละแบรนช์ถาวรด้วย PHPStan การทดสอบกฎ และการ dry-run ส่วน build.yml จะสร้างและรีลีสชุดแจกจ่ายเมื่อได้รับเหตุการณ์ repository-dispatch แบบ source-release หรือการ dispatch ด้วยตนเอง โมเดลการทำงานทั้งหมด ได้แก่ ทริกเกอร์ เลน เมทริกซ์การตรวจสอบความถูกต้อง และการรีลีสที่ใช้ร่วมกัน มีบันทึกไว้ใน /integrations/backport/production-usage/
Smoke test การใช้งานผลลัพธ์
หัวข้อที่มีชื่อว่า “Smoke test การใช้งานผลลัพธ์”ไปป์ไลน์การรีลีสคือ smoke test ของการผสานการทำงาน หลังจากการ build เสร็จสมบูรณ์ กระแสงานจะสลับ runner ไปยัง PHP เป้าหมายและรัน php -l กับซอร์สที่สร้างออกมาทั้งหมด จากนั้นจะติดตั้งและทดสอบการทำงานของแพ็กเกจที่สร้างขึ้นตลอดเมทริกซ์การตรวจสอบความถูกต้อง (PHP 8.1–8.4 สำหรับเลน PHP 8.1 และ PHP 7.4 และ 8.0 สำหรับเลน PHP 7.4) ชุดแจกจ่ายที่รันไทม์เป้าหมายปฏิเสธจะไม่ผ่านไปถึงขั้นการรีลีส ตรวจสอบยืนยันได้จาก .github/workflows/build.yml (จ็อบ syntax-check และ validate-*) คุณสามารถ smoke-test ผลลัพธ์ที่สร้างขึ้นในเครื่องด้วยวิธีเดียวกัน โดยใช้คำสั่ง Docker ที่ขั้นตอนการตรวจสอบความถูกต้องพิมพ์ออกมา — ดู /integrations/backport/quickstart/
จุดเข้าใช้งานสาธารณะ
หัวข้อที่มีชื่อว่า “จุดเข้าใช้งานสาธารณะ”พื้นผิวสาธารณะของตัวสร้างคือ orchestrator แบบ CLI และเอเลียสสคริปต์ Composer ของตัวสร้าง ไม่ใช่ไฟล์รันได้ใน bin/
| จุดเข้าใช้งาน | แปลงเป็น | วัตถุประสงค์ |
|---|---|---|
composer build | php scripts/build.php | รันการ build แบบเต็ม |
composer build:dry | php scripts/build.php --dry-run | รันการ build แบบ dry-run |
composer test | phpunit | รันชุดทดสอบ fixture ของกฎ |
composer analyse | phpstan analyse rector/rules scripts --level=10 | วิเคราะห์โค้ดของการ build |
ตรวจสอบยืนยันได้จาก composer.jsonscripts แพ็กเกจปลายทางเปิดเผยสัญลักษณ์ application programming interface (API) ดั้งเดิมของ NextPDF\ โดยไม่ถูก backport เปลี่ยนแปลง แพ็กเกจนี้แทนที่แพ็กเกจของซอร์ส และ autoload แผนผังที่ผสานรวมแล้วผ่านพรีฟิกซ์ PSR-4 เดียว
ดูเพิ่มเติม
หัวข้อที่มีชื่อว่า “ดูเพิ่มเติม”- /integrations/backport/overview/ — ตัวสร้างคืออะไรและสร้างสิ่งใดออกมา
- /integrations/backport/boot-and-discovery/ — ลำดับการบูตและการค้นหาซอร์ส
- /integrations/backport/install/ — การติดตั้งบนโฮสต์สำหรับการ build และบนปลายทาง
- /integrations/backport/production-usage/ — ไปป์ไลน์การรีลีส