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

سكربتات المستودع

سكربتات المستودع سكربتات صدفة تضبطها لكل مستودع (الإعدادات ← المستودعات ← أيقونة الطرفية في صف المستودع)، ويشغّلها خادم Control Center في شجرة عمل المساحة لذلك المستودع — نسخة العمل المعزولة تحت <dataDir>/<workspaceId>/spaces/<spaceId>/repos/<repo>/ حيث يعمل الوكلاء.

هناك نوعان:

السكربت متى يعمل الغرض
إعداد فور تجهيز شجرة العمل لمساحة تثبيت التبعيات، وتوليد الملفات، ونسخ .env
أرشفة مباشرة قبل تدمير شجرة العمل أو جمع مهملاتها تنظيف الموارد خارج شجرة العمل (شبكات Docker، والأنفاق، والحالة الخارجية)

يُشغَّل السكربتان عبر bash -lc (صدفة دخول، فتكون الأدوات المثبّتة بـ Homebrew أو nvm على PATH)، وشجرة العمل هي دليل العمل، وتُعيَّن متغيرات البيئة هذه:

المتغير القيمة
CC_WORKSPACE_PATH شجرة العمل (دليل العمل الحالي للسكربت)
CC_ROOT_PATH المستودع المصدر المسجّل — نسخة عملك أنت
CC_SPACE_ID المساحة التي تنتمي إليها شجرة العمل
CC_SPACE_NAME الاسم المعروض للمساحة
CC_REPO_NAME الاسم المعروض للمستودع

ومثاله سكربت إعداد يثبّت التبعيات ويجلب ملف .env الذي يستثنيه Git في المستودع:

نافذة طرفيّة
pnpm install
cp "$CC_ROOT_PATH/.env" .env
pnpm run build
  • إن خرج سكربت إعداد برمز غير صفري، أو انقضت مهلة الخمس دقائق، فشل تجهيز المساحة: تظهر المساحة في حالة الفشل مع إعادة المحاولة، ويُسجَّل ذيل مخرجات التشغيل. إعادة المحاولة تجهّز من شجرة عمل نظيفة وتشغّل السكربت من جديد — اكتب سكربتات الإعداد بحيث تنجح إعادة التشغيل بعد تثبيت جزئي (مديرو الحزم يتصرفون هكذا أصلًا).
  • سكربت الأرشفة يعمل بأفضل جهد: يُسجَّل الفشل (أو انتهاء مهلة الدقيقتين)، لكنه لا يمنع الحذف أبدًا. تُشغَّل الأرشفة في مسارات جمع المهملات، حيث لا أحد يجيب عن سؤال (مساحة محذوفة، أو طلب سحب مُدمَج، أو تنظيف مجدول).

لا يُشغَّل الإعداد إلا على شجرة عمل جديدة: إعادة إرسال الوكلاء إلى مساحة ما زالت قائمة تعيد استخدام نسخة العمل الموجودة، فلا تُدفع تكلفة التثبيت مرة أخرى.

يُسجَّل كل تنفيذ بحالته ومدته ورمز خروجه وذيل مخرجات محدود، ويظهر في حوار الإعدادات نفسه تحت «عمليات التشغيل الأخيرة» (يبثّه اشتراك repos.watchScriptRuns مباشرة).

السكربتات صدفة ينفّذها الخادم، فكتابتها مقصورة على مسؤولي مساحة العمل، وتخضع لصنف الإجراء processSpawn — شبكة الضوابط نفسها التي تتحكّم في كل عملية أخرى تُشغِّل عملية.