مواد پر جائیں

ریپو اسکرپٹس

ریپو اسکرپٹس وہ شیل اسکرپٹس ہیں جو آپ فی ریپو کنفیگر کرتے ہیں (ترتیبات → ریپوزٹریز → ریپو کی قطار پر ٹرمینل آئیکن) اور جنہیں Control Center کا سرور اُس ریپو کے کسی اسپیس کے worktree پر چلاتا ہے — یعنی <dataDir>/<workspaceId>/spaces/<spaceId>/repos/<repo>/ کے تحت الگ تھلگ چیک آؤٹ، جہاں ایجنٹ کام کرتے ہیں۔

یہ دو اقسام میں ہوتے ہیں:

اسکرپٹ کب چلتا ہے کس لیے استعمال کریں
سیٹ اپ کسی اسپیس کے لیے worktree کی پروویژننگ کے فوراً بعد ڈیپینڈنسیز انسٹال کرنا، فائلیں جنریٹ کرنا، .env کاپی کرنا
آرکائیو worktree کے تباہ ہونے یا garbage-collect ہونے سے ٹھیک پہلے worktree سے باہر کے وسائل صاف کرنا (docker نیٹ ورکس، ٹنلز، بیرونی حالت)

دونوں اسکرپٹس bash -lc کے ذریعے چلتے ہیں (لاگ اِن شیل، چنانچہ Homebrew/nvm سے انسٹال شدہ ٹولز PATH پر ہوتے ہیں)، worktree بطور ورکنگ ڈائریکٹری، اور یہ ماحول متغیرات سیٹ ہوتے ہیں:

متغیر قدر
CC_WORKSPACE_PATH worktree (اسکرپٹ کی cwd)
CC_ROOT_PATH رجسٹر شدہ سورس ریپو — آپ کا اپنا چیک آؤٹ
CC_SPACE_ID وہ اسپیس جس سے worktree تعلق رکھتا ہے
CC_SPACE_NAME اسپیس کا ڈسپلے نام
CC_REPO_NAME ریپو کا ڈسپلے نام

مثال کے طور پر، ایک سیٹ اپ اسکرپٹ جو ڈیپینڈنسیز انسٹال کرتا ہے اور ریپو کی gitignore شدہ .env لے آتا ہے:

ٹرمنل ونڈو
pnpm install
cp "$CC_ROOT_PATH/.env" .env
pnpm run build
  • کوئی سیٹ اپ اسکرپٹ جو غیر صفر کے ساتھ ختم ہو (یا اپنی 5 منٹ کی ٹائم آؤٹ حد سے بڑھ جائے) اسپیس کی پروویژننگ ناکام کر دیتا ہے: اسپیس ناکام حالت میں دوبارہ کوشش کے ساتھ دکھائی دیتی ہے، اور رن کے آؤٹ پٹ کا ٹیل درج کر لیا جاتا ہے۔ دوبارہ کوشش صاف worktree سے پروویژن کرتی ہے اور اسکرپٹ پھر چلاتی ہے — سیٹ اپ اسکرپٹس ایسے لکھیں کہ جزوی انسٹال کے بعد دوبارہ چلانا کام کرے (پیکیج مینیجرز پہلے ہی ایسا برتاؤ کرتے ہیں)۔
  • آرکائیو اسکرپٹ بہترین کوشش کے اصول پر چلتا ہے: ناکامی (یا اس کی 2 منٹ کی ٹائم آؤٹ) درج ہوتی ہے مگر حذف کو کبھی نہیں روکتی۔ آرکائیو اُن GC راستوں پر چلتا ہے جہاں پرامپٹ کا جواب دینے والا کوئی نہیں ہوتا (اسپیس حذف، PR مرج، طے شدہ صفائی)۔

سیٹ اپ صرف نئے worktree پر چلتا ہے: کسی گرم اسپیس میں ایجنٹس دوبارہ ڈسپیچ کرنے پر موجودہ چیک آؤٹ ہی دوبارہ استعمال ہوتا ہے اور انسٹال کا خرچ دوبارہ نہیں اٹھانا پڑتا۔

ہر عمل درآمد اپنی حالت، دورانیے، ایگزٹ کوڈ اور ایک محدود آؤٹ پٹ ٹیل کے ساتھ درج ہوتا ہے، جو اُسی ترتیبات ڈائیلاگ میں “حالیہ رنز” کے تحت نظر آتا ہے (repos.watchScriptRuns سبسکرپشن اسے براہِ راست اسٹریم کرتی ہے)۔

اسکرپٹس وہ شیل ہیں جو سرور چلاتا ہے، چنانچہ انہیں لکھنے کا اختیار صرف ورک اسپیس ایڈمنز تک محدود ہے اور یہ processSpawn ایکشن کلاس کی حفاظت میں ہیں — وہی گارڈریل جال جو ہر دوسرے پراسیس اسپان کرنے والے آپریشن کو گیٹ کرتا ہے۔