
Serpent Team

Andrew Hanna

الإجابة باختصار: أتمتة النشر في سيلزفورس بالـ scratch orgs معناها إن
مهمة الـ CI بتنشئ مؤسسة مؤقتة من ملف تعريف، وتثبّت الاعتماديات، وتنشر الكود، وتشغّل
الاختبارات، وبعدين تمسح المؤسسة. المكوّنات هي Dev Hub، وملف تعريف scratch org، وملف
sfdx-project.json، وأربع أو خمس أوامر من الـ CLI. واللي بيحدد هل الحكاية
دي هتصمد مع فريق حقيقي مش السكربت، لكن حدود الـ scratch orgs نفسها.
الـ scratch org مؤسسة مؤقتة بتتعمل من ملف إعدادات ومقادة بالمصدر، يعني شكلها عايش في المستودع مش في دماغ حد. استخدمها لما البيئة المفروض تتعرّف بالكود وترمى بعد كده: تطوير لكل ميزة، وتحقق لكل pull request، وبناء الحزم واختبار تثبيتها.
وخلّيك على الساندبوكس لو محتاج حجم بيانات قريب من الإنتاج أو نقطة تكامل طويلة العمر. الـ scratch orgs بتقف عند حوالي 200 ميجابايت من السجلات و50 ميجابايت من الملفات، وكمان بتنتهي صلاحيتها (Salesforce Ben).
ملف التعريف هو المخطط. المطلوب إجبارياً هو edition بس، بقيم زي Developer
وEnterprise وGroup وProfessional ونظائرها للشركاء. والمفاتيح اللي تستاهل تعرفها (دليل مطوّري Salesforce DX):
خلّي لكل غرض ملف تعريف لوحده. تعريف الـ CI لازم يكون أقل ما يمكن وأسرع ما يمكن، وتعريف العرض التوضيحي ممكن يشيل بيانات عيّنة. وخلط الاتنين هو بالظبط اللي بيحوّل فحص pull request لتلات دقايق انتظار.
الـ scratch orgs بتستخدم تتبّع المصدر، فأنت بتنشر مشروعك للمؤسسة وبتسحب التغييرات
منها. في الـ CLI الحالي الأمر هو sf project deploy start للدفع وsf project retrieve start
للسحب، والأوامر القديمة force:source:push وforce:source:deploy
اتدمجت فيه (دليل مطوّري Salesforce DX).
والاعتماديات بتيجي من sfdx-project.json. مهمة الـ CI بتقرا منه الـ
namespace واعتماديات الحزم وبتثبّتها قبل ما الكود بتاعك ينزل، وعشان كده البناء اللي
بيشتغل محلياً ويفشل في الـ CI بيبقى غالباً مشكلة ترتيب اعتماديات، مش مشكلة ميتاداتا.
sf org create scratch --definition-file config/project-scratch-def.json --alias
ci، بأقصر مدة مفيدة.
sfdx-project.json.
sf project deploy start.الخطوة السابعة هي اللي الفرق بتنساها، وهي اللي بتكسر خط النشر بهدوء بعد أسبوع.
هنا بتقف معظم الأدلة، وهنا بالظبط بتتكسر الخطوط الحقيقية. أربع حاجات خطّط ليها:
sf org list limits قبل ما تصمم سير العمل، مش بعده.
ولو بتوصل للسقف، الخيارات الصريحة إنك تحجز مؤسسة لكل PR للتغييرات اللي بتلمس ميتاداتا محزّمة بس، وتستخدم مؤسسة مشتركة طويلة العمر لباقي الحالات، أو تشغّل تجمّعاً جاهزاً. Serpent بيوفر scratch orgs في كل الخطط، وبيضيف تجمّع مؤسسات مُسخّنة مسبقاً في خطتَي Scale وEnterprise، فالمؤسسة بتبقى مستنية قبل ما خط النشر يطلبها.
هل محتاج Dev Hub عشان أستخدم scratch orgs؟
أيوه. الـ scratch orgs بتتعمل مقابل Dev Hub مفعّل، وهو كمان المكان اللي بتتحسب فيه حصصك اليومية والنشطة.
هل شركات الـ ISV تقدر تبني حزمها بالطريقة دي؟
أيوه، وده المسار المعتاد. ابنِ وثبّت نسخة الحزمة في scratch org جديدة كل تشغيلة، عشان أخطاء التثبيت تظهر في الـ CI مش عند المشترك.
إيه الفرق بين org shape والـ snapshot؟
الـ shape بينسخ إعدادات مؤسسة قائمة لمؤسسة جديدة فاضية. أما الـ snapshot فبينسخ scratch org في لحظة زمنية محددة، وبما فيها اللي كان متنشر عليها.
هل كل pull request ياخد scratch org خاصة بيه؟
بس لو حصتك بتسمح. بـ3 مؤسسات نشطة، المستودع المزحوم محتاج تجمّعاً جاهزاً أو مؤسسة تحقق مشتركة.
تلاقي أدلة عملية أكتر خطوة بخطوة عن DevOps في سيلزفورس داخل مكتبة SF Guides.
بدون التزام.