Start free
Andrew Hanna

Andrew Hanna

التغليف من الجيل الثاني (2GP) في Salesforce، بشرح مبسّط

التغليف من الجيل الثاني (2GP) في Salesforce، بشرح مبسّط

الخلاصة: التغليف من الجيل الثاني (2GP) هو أسلوب Salesforce الحديث المعتمد على المصدر لبناء وتوزيع حزم managed وunlocked انطلاقًا من إدارة الإصدارات بدل packaging org. وهو يحل محل التغليف من الجيل الأول (1GP) بحزم معيارية، وnamespaces مرنة، وتبعيات صريحة، وسير عمل عبر Salesforce CLI. وتوصي Salesforce الآن باستخدام 2GP في كل تطوير جديد لحزمة managed.

ما هو التغليف من الجيل الثاني (2GP) في Salesforce؟

حزمة 2GP هي حاوية للـ metadata والكود والمخطط الذي توزّعه كتطبيق - لعملاء AppExchange (managed) أو عبر بيئات مؤسستك (unlocked). الفكرة الجوهرية أن الحزمة تُبنى من المصدر في Git، لا من packaging org ذات حالة. وتوضّح Salesforce صراحةً أن managed 2GP "ليس مجرد النسخة 2.0" من 1GP؛ بل هو نموذج تطوير مختلف وصديق للأتمتة، وهو المسار الموصى به لكل الحزم الجديدة.

كيف يختلف 2GP عن التغليف من الجيل الأول (1GP)؟

باختصار: 1GP يعيش في packaging org، و2GP يعيش في مستودعك. هذا التغيير وحده يفتح الباقي:

  • معتمد على المصدر. تُنشأ نسخة الحزمة من مصدر مشروعك، فيكون Git مصدر الحقيقة.
  • معياري. يمكنك تقسيم الوظائف على عدة حزم بدل كتلة واحدة ضخمة.
  • مرونة الـ namespace. يمكن مشاركة الـ namespace نفسه بين عدة حزم 2GP، مع أن كل حزمة ترتبط بـ namespace واحد لا يتغير بعد الإنشاء.
  • تبعيات صريحة. تُعلَن تبعيات الحزمة في sfdx-project.json، لا تُكتشف عند التثبيت.
  • ملائم لإدارة الإصدارات والـ CI. يجري السير كله عبر Salesforce CLI، فيندمج في خط الإنتاج.

managed أم unlocked: أي 2GP تحتاج؟

كلاهما حزم من الجيل الثاني تُبنى بالطريقة نفسها. والاختيار يتعلق بالجمهور:

  • Managed 2GP - لشركات الـ ISV التي توزّع على AppExchange. الكود محميّ الملكية والحزمة تحمل namespace مسجّلًا.
  • Unlocked packages - للفرق الداخلية التي تنظّم metadata المؤسسة في وحدات قابلة للنشر ومُدارة بالإصدارات. ويبقى الكود قابلًا للقراءة.

كيف تنشئ حزمة 2GP؟ (خطوة بخطوة)

تحتاج إلى Dev Hub org مفعّل فيها Unlocked Packages and Second-Generation Managed Packages، وصلاحية Create and Update Second-Generation Packages. ثم:

  1. أنشئ تعريف الحزمة. sf package create --name MyApp --package-type Managed --path force-app --target-dev-hub DevHub
  2. أنشئ نسخة من مصدرك، بمفتاح تثبيت وتغطية كود. sf package version create --package MyApp --installation-key test1234 --code-coverage --wait 10
  3. اختبر التثبيت في scratch أو sandbox org. sf package install --package 04t... --wait 10
  4. رقِّها إلى released بعد أن تنجح. الترقية تتطلب استيفاء تغطية الكود. sf package version promote --package [email protected]

النسخة الـ managed المُرقّاة هي التي تقدّمها إلى مراجعة أمان AppExchange قبل أن يتمكن العملاء من تثبيتها.

ما أبرز عثرات 2GP الشائعة؟

  • الـ namespace دائم. اخترْه بعناية؛ فحزمة 2GP لا يمكنها تغيير الـ namespace لاحقًا.
  • تغطية الكود تحكم الترقية. لا يمكنك ترقية نسخة إلى released دون استيفاء متطلبات تغطية Apex.
  • التبعيات يجب أن تكون صريحة. التبعيات غير المعلَنة تفشل عند التثبيت، لا عند البناء.
  • ليست كل أنواع metadata في 1GP مدعومة. تحقق من الدعم قبل ترحيل حزمة قديمة.

ولأن السير كله يبدأ من الـ CLI، فهو يندمج في خط إنتاج DevOps - المكان نفسه الذي تنسّق فيه أدوات مثل Copado وGearset وSalto وAutoRABIT وFlosum وBlue Canvas إدارة الإصدارات والاختبار. لمزيد من أدلة البناء والإصدار، طالع SF Guides لدينا.

FAQ

هل يحل 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 مؤسستك في وحدات مُدارة بالإصدارات وقابلة للنشر.

مقالات ذات صلة

هل تريد معرفة كيف يمكنكم الشحن أسرع قبل البدء؟ لنتحدث

بدون التزام.