اسکریپتهای مخزن
اسکریپتهای مخزن، اسکریپتهای پوستهایاند که بهازای هر مخزن پیکربندی میکنید
(تنظیمات → مخزنها → آیکون ترمینال در سطر آن مخزن) و سرور Control Center آنها
را روی worktree یک فضا از آن مخزن اجرا میکند — همان چکاوت ایزوله زیر
<dataDir>/<workspaceId>/spaces/<spaceId>/repos/<repo>/ که عاملها در آن کار
میکنند.
دو نوع وجود دارد:
| اسکریپت | زمان اجرا | کاربرد |
|---|---|---|
| راهاندازی | درست پس از آمادهسازی یک worktree برای یک فضا | نصب وابستگیها، تولید فایل، کپیکردن .env |
| بایگانی | درست پیش از نابودی یا جمعآوری زبالهٔ یک worktree | پاکسازی منابع بیرون از worktree (شبکههای docker، تونلها، وضعیت بیرونی) |
اسکریپتها کجا اجرا میشوند
بخش با عنوان “اسکریپتها کجا اجرا میشوند”هر دو اسکریپت با bash -lc اجرا میشوند (یک پوستهٔ ورود، پس ابزارهای
نصبشده با Homebrew/nvm روی PATH هستند) و worktree پوشهٔ کاری آنهاست؛
این متغیرهای محیطی هم تنظیم میشوند:
| متغیر | مقدار |
|---|---|
CC_WORKSPACE_PATH |
همان worktree (پوشهٔ کاری اسکریپت) |
CC_ROOT_PATH |
مخزن مبدأ ثبتشده — چکاوت خودتان |
CC_SPACE_ID |
فضایی که worktree به آن تعلق دارد |
CC_SPACE_NAME |
نام نمایشی فضا |
CC_REPO_NAME |
نام نمایشی مخزن |
برای نمونه، یک اسکریپت راهاندازی که وابستگیها را نصب میکند و .env
نادیدهگرفتهشدهٔ مخزن را میآورد:
pnpm installcp "$CC_ROOT_PATH/.env" .envpnpm run buildرفتار هنگام شکست
بخش با عنوان “رفتار هنگام شکست”- اسکریپت راهاندازییی که با کد خروج غیرصفر خارج شود (یا از مهلت ۵ دقیقهایاش بگذرد)، آمادهسازی فضا را ناموفق میکند: فضا وضعیت ناموفق را همراه با یک تلاش مجدد نشان میدهد و دنبالهٔ خروجی اجرا ثبت میشود. تلاش مجدد از یک worktree پاک آمادهسازی میکند و اسکریپت را دوباره اجرا میکند — اسکریپتهای راهاندازی را طوری بنویسید که اجرای دوباره پس از یک نصب نیمهکاره کار کند (مدیرهای بسته از قبل همین رفتار را دارند).
- اسکریپت بایگانی با تلاش حداکثری اجرا میشود: شکست آن (یا مهلت ۲ دقیقهایاش) ثبت میشود اما هرگز حذف را مسدود نمیکند. بایگانی روی مسیرهای GC اجرا میشود، جایی که کسی نیست به پرامپتی پاسخ دهد (فضا حذف شده، PR ادغام شده، پاکسازی زمانبندیشده).
راهاندازی فقط روی یک worktree تازه اجرا میشود: اعزام دوبارهٔ عاملها به یک فضای گرم، همان چکاوت موجود را دوباره به کار میگیرد و هزینهٔ نصب را دوباره نمیپردازد.
تاریخچهٔ اجرا
بخش با عنوان “تاریخچهٔ اجرا”هر اجرا با وضعیت، مدت، کد خروج و یک دنبالهٔ خروجی محدود ثبت میشود که در همان
پنجرهٔ تنظیمات زیر «اجراهای اخیر» دیده میشود (اشتراک repos.watchScriptRuns
آن را بهصورت زنده جریانی میفرستد).
مجوزها
بخش با عنوان “مجوزها”اسکریپتها پوستهای هستند که سرور اجرا میکند، پس نوشتنشان محدود به
مدیران فضای کاری است و با کلاس اقدام processSpawn محافظت میشود — همان تور
گاردریلی که دروازهبان هر عملیات فرایندساز دیگر است.