
Andrew Hanna

Andrew Hanna

الخلاصة: التغليف من الجيل الثاني (2GP) هو أسلوب Salesforce الحديث المعتمد على المصدر لبناء وتوزيع حزم managed وunlocked انطلاقًا من إدارة الإصدارات بدل packaging org. وهو يحل محل التغليف من الجيل الأول (1GP) بحزم معيارية، وnamespaces مرنة، وتبعيات صريحة، وسير عمل عبر Salesforce CLI. وتوصي Salesforce الآن باستخدام 2GP في كل تطوير جديد لحزمة managed.
حزمة 2GP هي حاوية للـ metadata والكود والمخطط الذي توزّعه كتطبيق - لعملاء AppExchange (managed) أو عبر بيئات مؤسستك (unlocked). الفكرة الجوهرية أن الحزمة تُبنى من المصدر في Git، لا من packaging org ذات حالة. وتوضّح Salesforce صراحةً أن managed 2GP "ليس مجرد النسخة 2.0" من 1GP؛ بل هو نموذج تطوير مختلف وصديق للأتمتة، وهو المسار الموصى به لكل الحزم الجديدة.
باختصار: 1GP يعيش في packaging org، و2GP يعيش في مستودعك. هذا التغيير وحده يفتح الباقي:
sfdx-project.json، لا تُكتشف عند التثبيت.
كلاهما حزم من الجيل الثاني تُبنى بالطريقة نفسها. والاختيار يتعلق بالجمهور:
تحتاج إلى Dev Hub org مفعّل فيها Unlocked Packages and Second-Generation Managed Packages، وصلاحية Create and Update Second-Generation Packages. ثم:
sf package create --name MyApp --package-type Managed --path force-app
--target-dev-hub DevHub
sf package version create --package MyApp --installation-key test1234
--code-coverage --wait 10
sf package install --package 04t... --wait 10
sf package version promote --package [email protected]
النسخة الـ managed المُرقّاة هي التي تقدّمها إلى مراجعة أمان AppExchange قبل أن يتمكن العملاء من تثبيتها.
ولأن السير كله يبدأ من الـ CLI، فهو يندمج في خط إنتاج DevOps - المكان نفسه الذي تنسّق فيه أدوات مثل Copado وGearset وSalto وAutoRABIT وFlosum وBlue Canvas إدارة الإصدارات والاختبار. لمزيد من أدلة البناء والإصدار، طالع SF Guides لدينا.
هل يحل 2GP محل 1GP؟
توصي Salesforce بـ 2GP لكل الحزم الـ managed الجديدة، مع أن حزم 1GP القائمة ما زالت تعمل ويمكن ترحيلها.
هل أحتاج إلى Dev Hub لـ 2GP؟
نعم. فعّل Dev Hub والتغليف من الجيل الثاني، وامنح صلاحية إنشاء/تحديث الحزم قبل أن تبدأ.
هل يمكن لحزمتَي 2GP مشاركة namespace؟
نعم. يمكن لعدة حزم managed 2GP استخدام namespace واحد، لكن كل حزمة ترتبط بـ namespace واحد لا يتغير بعد الإنشاء.
ما الفرق بين حزم managed وunlocked؟
Managed 2GP للتوزيع على AppExchange مع حماية الملكية الفكرية؛ أما unlocked packages فتنظّم metadata مؤسستك في وحدات مُدارة بالإصدارات وقابلة للنشر.
بدون التزام.