تشغيل أداة بناء النقل الخلفي ضمن مسار إصدار
هذه أدوات بناء وليست اعتمادية لوقت التشغيل. توضّح هذه الصفحة كيفية تشغيل مسار الإصدار الذي ينتج النقل الخلفي. يعمل المسار في التكامل المستمر (CI)؛ ولا يعمل أبدًا داخل تطبيق نهائي.
لمحة سريعة
قسم بعنوان «لمحة سريعة»يستخدم مسار الإنتاج مساري عمل. يفحص 0-ci.yml كل تغيير على كل فرع دائم. ويشغّل إصدار المصدر build.yml، الذي يبني التوزيعة ويصدرها. يُتحقق من مساري العمل كليهما مقابل .github/workflows/.
بوابة CI
قسم بعنوان «بوابة CI»يعمل 0-ci.yml عند أحداث الدفع وطلب السحب للفرعين PHP74 وPHP81. ويشغّل ثلاث مهام بالترتيب:
- PHPStan (أدوات البناء) —
composer analyse، المستوى 10 لـrector/rulesوscripts. - PHPUnit (قواعد Rector) —
composer test، مجموعات التجهيزات للقواعد المخصصة الثلاث. - تشغيل البناء التجريبي —
composer build:dry، ولا يبدأ إلا بعد المهمتين الأوليين.
تستخدم الأحداث الموثوقة منفّذات PHP ذاتية الاستضافة. أما طلبات السحب من النُسخ المتفرّعة وDependabot فتستخدم منفّذات مستضافة على GitHub مع إعداد PHP 8.5. يُتحقق من هذا مقابل 0-ci.yml (تعبير runs-on وخطوة setup-php الشرطية). ويفحص نموذج الفرعين المزدوج التغييرات التي تمسّ كلا الهدفين بشكل مستقل في طلب السحب لكل فرع.
مسار الإصدار
قسم بعنوان «مسار الإصدار»build.yml هو بناء الإنتاج. يعمل عند حدث repository_dispatch من النوع source-release، أو يدويًا عبر workflow_dispatch مع إدخال وسم. يوجّه وسم الإصدار المسار. ويكون رقم الإصدار بصيغة MAJOR.MINOR.PATCH وفق واجهة برمجة تطبيقات عامة مُعلَنة (Semantic Versioning 2.0.0 §2).
مسار PHP 8.1
قسم بعنوان «مسار PHP 8.1»- build-php81 — يسحب أدوات البناء، ويجهّز PHP 8.5، ويثبّت اعتماديات البناء، ويستنسخ مستودعات المصدر عند وسم الإصدار، ويشغّل
scripts/build.php، ويبدّل المنفّذ إلى PHP 8.1، ويتحقق من صحة بنيةoutput/srcعلى PHP 8.1، ثم يثبّت الحزمة المُنتَجة باستخدام--no-dev. ويرفع المُخرَج بوصفه أثر بناء. - validate-php81 — ينزّل أثر البناء، ثم يثبّته ويختبره على مصفوفة من PHP 8.1 و8.2 و8.3 و8.4.
- release-php81 — ينزّل أثر البناء، ويسجّل الشجرة المُولَّدة ويضع لها وسمًا، وينشئ أرشيف zip يستثني
vendor/و.git/، وينشر إصدار GitHub مع إرفاق الأرشيف.
مسار PHP 7.4
قسم بعنوان «مسار PHP 7.4»- build-php74 — يسحب أدوات البناء على الفرع
PHP74، ويجهّز PHP 8.5، ويستنسخ مستودع المصدر الأساسي فقط عند الوسم، ويشغّلscripts/build.php --target=php74، ويبدّل إلى PHP 7.4، ويتحقق من صحة بنية المُخرَج على PHP 7.4. - validate-php74 — يثبّت ويختبر على مصفوفة من PHP 7.4 و8.0.
- release-php74 — ينشئ أرشيف zip من المُخرَج الأساسي فقط ويرفقه بالإصدار نفسه بصفته أرشيفًا ثانيًا.
يُتحقق من هذا التدفق مقابل تعريفات المهام والمصفوفات في build.yml.
يشترك المساران في إصدار GitHub واحد. ينشئ مسار PHP 8.1 الإصدار، ويرفق مسار PHP 7.4 أرشيفه بالوسم نفسه. تجعل مجموعة
concurrencyالمسماةbackport-buildمعcancel-in-progress: falseعمليات البناء تعمل واحدة تلو الأخرى، بحيث لا يمكن أن يتسابق إصدارا مصدر.
تشغيل خط الأنابيب
قسم بعنوان «تشغيل خط الأنابيب»تشغيل عملية بناء
قسم بعنوان «تشغيل عملية بناء»تبدأ عملية البناء عادةً تلقائيًا عندما تنشر مؤسسة المصدر إصدارًا. لإعادة بناء وسم معيّن يدويًا، أرسِل build.yml مع إدخال الوسم، مثل v2.0.0. رمز الإرسال هو secrets.BACKPORT_TRIGGER_TOKEN، وهو يسمح باستنساخ مستودع المصدر. يُتحقق من هذا مقابل build.yml (workflow_dispatch.inputs.tag، GH_TOKEN).
قراءة عملية بناء فاشلة
قسم بعنوان «قراءة عملية بناء فاشلة»يتوقف نص البناء عند أول مرحلة فاشلة ويطبع اسم المرحلة والخطأ. المراحل الخمس هي الدمج، وRector، وتوليد composer.json، ونسخ الأصول، والتحقق. إذا فشلت خطوة التحقق من صحة البنية بعد البناء، فهذا يعني أن Rector أنتج مُخرَجًا يرفضه وقت تشغيل الهدف. تحمي هذه الخطوة الإصدار. اربط الفشل بسببه في /integrations/backport/troubleshooting/.
ما الذي يُنشر
قسم بعنوان «ما الذي يُنشر»يتضمن الإصدار أرشيفات توزيع مضغوطة. تُوزَّع الحزمة بوصفها وسوم إصدار، لا فروعًا. يثبّت المستهلكون nextpdf/backport (واختياريًا nextpdf/backport-pro) من قناة الإصدار. يستثني الأرشيف vendor/ و.git/. يُتحقق من هذا مقابل build.yml (zip -r ... -x '*/vendor/*' '*/.git/*').
إصدار المُخرَج
قسم بعنوان «إصدار المُخرَج»يحمل composer.json المُنتَج الإصدار المُمرَّر في سطر الأوامر (--version، أو وسم الإرسال بعد إزالة v البادئ). تثبّت حزمة Pro nextpdf/backport عند قيد علامة الإقحام major.minor المطابق. يُتحقق من هذا مقابل scripts/adjust-composer.php (majorMinor()، generateProComposer()). حافظ على توافق وسم إصدار المصدر وإصدار النقل الخلفي حتى تبقى خريطة replace متسقة.
التالي
قسم بعنوان «التالي»- /integrations/backport/security-and-operations/ — حدود الثقة في المسار ووضع سلسلة التوريد.
- /integrations/backport/troubleshooting/ — مرجع الأعطال لكل مرحلة.