تخطَّ إلى المحتوى

دمج أداة النقل الخلفي من NextPDF

هذه أدوات بناء فقط، وليست تبعية وقت تشغيل. يستخدم القائمون على الصيانة هذه الحزمة لإنتاج توزيعات النقل الخلفي من ⁨NextPDF⁩ لإصداري ⁨PHP⁩ (⁨PHP⁩: ⁨Hypertext Preprocessor⁩) 7.4 و ⁨PHP 8.1.⁩ يجب ألا تضيف التطبيقات هذه الحزمة مطلقًا كتبعية وقت تشغيل.

توجد نقطتا دمج منفصلتان. يُدمَج مستودع أداة البناء في تدفق إصدار مضيف البناء. أما التطبيق النهائي فلا يدمج إلا الحزمة المُنتَجة، nextpdf/backport، في شجرة تبعياته. ولا تدخل أداة البناء مطلقًا في شجرة تبعيات أي تطبيق.

التثبيت (لمضيفات البناء فقط)

قسم بعنوان «التثبيت (لمضيفات البناء فقط)»

نظرًا إلى أن أداة البناء تعلن "type": "project" في composer.json، فعاملها بوصفها مستودع مشروع، لا مكتبة. ادمجها باستنساخ المستودع وتشغيل تثبيت تطوير، لا عبر composer require:

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

اسحب الفرع الخاص بالهدف الذي تعتزم إنتاجه. استخدم PHP74 (الافتراضي) لتوزيعة ⁨PHP 7.4⁩ المقتصرة على النواة. واستخدم PHP81 لتوزيعة ⁨PHP 8.1⁩ مع جميع المحوِّلات. لا تمرِّر --no-dev. يتطلب البناء محرك ⁨Rector⁩ و⁨PHPStan⁩ و⁨PHPUnit⁩؛ وهي تبعيات تطوير. جرى التحقق من ذلك بالرجوع إلى composer.json (type، require-dev) ونموذج الفرعين المزدوجين في /⁨integrations/backport/overview/.⁩

الإقلاع والاكتشاف التلقائي

قسم بعنوان «الإقلاع والاكتشاف التلقائي»

لا توفر أداة البناء أي اكتشاف تلقائي على مستوى أطر العمل. عند البناء، يحمِّل scripts/build.php محرك ⁨Rector⁩ وقواعد شجرة الصياغة المجردة الثلاث المخصصة عبر استدعاءات require_once صريحة والتحميل التلقائي وفق توصية معايير ⁨PHP⁩ رقم 4 (⁨PSR-4⁩) من ⁨Composer.⁩ يُوثَّق تسلسل الإقلاع الكامل واكتشاف وحدات المصدر في /⁨integrations/backport/boot-and-discovery/.⁩

غير منطبق. أداة البناء هي أداة لواجهة سطر الأوامر (⁨CLI⁩) ولا تتضمن حاوية حقن تبعيات. جرى التحقق من ذلك بالرجوع إلى بنية المستودع وcomposer.jsonautoload.

ليست “إعدادات النشر” ملفًا منفصلًا، بل هي مجموعة رايات البناء وتعريفات الحزم الثابتة في scripts/adjust-composer.php:

  • خريطة الأهداف. تُنتِج --target=php81 الحزمة nextpdf/backport (بالقيد >=8.1 <8.5، وتحلّ محل النواة والمحوِّلات و⁨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⁩ وجميع المحوِّلات.
  • الإصدار. يكتب البناء قيمة --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⁩ واختبارات القواعد وتشغيل تجريبي. ويُنتِج build.yml التوزيعة ويصدرها عند تلقّيه حدث إرسال مستودع source-release أو إرسالًا يدويًا. يُوثَّق نموذج التشغيل الكامل — المُشغِّلات والمسارات ومصفوفة التحقق والإصدار المشترك — في /⁨integrations/backport/production-usage/.⁩

اختبار التحقق المبدئي لاستهلاك المخرجات

قسم بعنوان «اختبار التحقق المبدئي لاستهلاك المخرجات»

خط أنابيب الإصدار هو اختبار التحقق المبدئي للدمج. بعد اكتمال البناء، يبدّل سير العمل المُشغِّل إلى إصدار ⁨PHP⁩ الهدف ويشغّل php -l على المصدر المُصدَر. ثم يثبّت الحزمة المُنتَجة ويختبرها عمليًا عبر مصفوفة التحقق (⁨PHP 8.1⁩–8.4 لمسار ⁨PHP 8.1⁩، و⁨PHP 7.4⁩ و8.0 لمسار ⁨PHP 7.4⁩). وأي توزيعة يرفضها وقت تشغيل هدف لا تصل إلى مرحلة الإصدار. جرى التحقق من ذلك بالرجوع إلى .github/workflows/build.yml (مهمة فحص الصياغة ومهام validate-*). يمكنك إجراء التحقق المبدئي للمخرجات المُنتَجة محليًا بالطريقة نفسها عبر أمر ⁨Docker⁩ الذي تطبعه مرحلة التحقق — راجع /⁨integrations/backport/quickstart/.⁩

السطح العام لأداة البناء هو منسّق واجهة سطر الأوامر وأسماؤه البديلة في سكربتات ⁨Composer⁩، وليس ملفًا تنفيذيًا في bin/.

نقطة الدخوليُترجَم إلىالغرض
composer buildphp scripts/build.phpتشغيل البناء الكامل
composer build:dryphp scripts/build.php --dry-runتشغيل بناء تجريبي
composer testphpunitتشغيل مجموعات تجهيزات اختبار القواعد
composer analysephpstan analyse rector/rules scripts --level=10تحليل كود البناء

جرى التحقق من ذلك بالرجوع إلى composer.jsonscripts. تعرض الحزمة النهائية رموز واجهة برمجة التطبيقات (⁨API⁩) الأصلية في NextPDF\ دون تغيير من النقل الخلفي. تحلّ الحزمة محل حزم المصدر وتحمِّل الشجرة المدموجة تلقائيًا عبر بادئة ⁨PSR-4⁩ الواحدة.

  • /⁨integrations/backport/overview/⁩ — ما هي أداة البناء وما الذي تنتجه.
  • /⁨integrations/backport/boot-and-discovery/⁩ — تسلسل الإقلاع واكتشاف المصدر.
  • /⁨integrations/backport/install/⁩ — التثبيت على مضيف البناء وفي الطرف النهائي.
  • /⁨integrations/backport/production-usage/⁩ — خط أنابيب الإصدار.