بیلدها: تنظیمات، کش، صف و زنجیرهٔ تأمین
هر بیلد روی ماشینهای بیلد ما، در محیطی ایزوله اجرا میشود. این صفحه میگوید چطور بیلد را تنظیم کنید، کش چه میکند، صف چطور کار میکند و هر بیلد چه مدارکی از خود به جا میگذارد.
تنظیمات بیلد#
هر برنامه و فانکشن تنظیمات بیلد خودش را دارد. چیزی را که خالی بگذارید، پلتفرم از روی پروژه تشخیص میدهد. تغییرها از بیلد بعدی اعمال میشوند؛ بیلدی که در حال اجراست با تنظیماتی که با آن شروع شده تمام میشود.
| تنظیم | چه میکند |
|---|---|
root-dir | پوشهٔ پروژه داخل ریپازیتوری، مثلاً apps/web در یک monorepo. خالی یعنی ریشهٔ ریپازیتوری. |
ignore-command | گام نادیدهگرفتن بیلد: فرمانی که پیش از بیلد اجرا میشود؛ اگر با کد ۰ تمام شود بیلد «رد شده» (skipped) ثبت میشود و چیزی مستقر نمیشود. مثلاً git diff --quiet HEAD^ HEAD -- apps/web. |
install-command | جایگزین فرمان نصب وابستگیها، مثلاً npm ci --legacy-peer-deps. |
build-command | جایگزین فرمان بیلد، مثلاً npm run build:prod. |
output-dir | پوشهٔ خروجی، اگر با تشخیص خودکار فرق دارد. |
node-version | نسخهٔ اصلی Node.js: ۲۲، ۲۴ یا ۲۶ (پیشفرض ۲۶). |
secret-scan | block (پیشفرض): سکرتِ احتمالاً واقعی در کد بیلد را متوقف میکند؛ warn: فقط گزارش میشود. |
cache | کش بیلد را روشن (on) یا خاموش (off) میکند. |
cloudhost apps build-config shop
cloudhost apps build-config set shop root-dir apps/web
cloudhost apps build-config set shop node-version 24
cloudhost apps build-config set shop ignore-command "git diff --quiet HEAD^ HEAD -- apps/web"
cloudhost apps build-config clear shop build-commandکش بیلد#
پس از هر بیلد موفق، وابستگیهای نصبشده و کش بیلد فریمورک (مثلاً کش Next.js) برای همان پروژه ذخیره میشود. بیلد بعدی که همان کلید را دارد آنها را برمیگرداند و نصب و بیلد سریعتر میشود. کلید از فایل قفل (package-lock.json، pnpm-lock.yaml یا yarn.lock)، نسخهٔ Node.js، پوشهٔ ریشه و فریمورک بیلد میشود.
- تغییر فایل قفل، نسخهٔ Node.js یا پوشهٔ ریشه کلید جدید ایجاد میکند؛ کش قبلی دیگر به کار نمیرود و بهمرور پاک میشود.
- پروژهٔ بدون فایل قفل کش نمیشود.
- اندازهٔ کش هر پروژه: رایگان ۵۰۰ مگابایت، حرفهای ۱ گیگابایت، سازمانی ۲ گیگابایت. وقتی پر شود، قدیمیترین ورودیها اول پاک میشوند.
- برای یک بار بیلد بدون کش، «بیلد دوباره بدون کش» را بزنید؛ برای حذف کردن همهچیز، کش را خالی کنید.
cloudhost apps build-cache shop
cloudhost apps build-cache clear shop
cloudhost apps builds redeploy shop 83548b3f --no-cacheبیلد همزمان و صف#
هر تیم به اندازهٔ پلنش بیلد همزمان دارد: رایگان یک، حرفهای سه، سازمانی طبق قرارداد. بیلدهای بیشتر در صف تیم میمانند و به ترتیب، قدیمیترین اول، اجرا میشوند. فهرست بیلدها جای هر بیلدِ در صف را نشان میدهد و دلیل انتظار را: پر بودن سهم همزمانی تیم، یا انتظار برای یک ماشین بیلد آزاد.
بیلدی که در صف یا در حال اجراست را میتوانید لغو کنید؛ بیلد در حال اجرا میایستد و چیزی مستقر نمیکند. بیلد دوباره همان کد یا کامیت را با تنظیمات امروز بیلد میکند.
cloudhost apps builds shop
cloudhost apps builds cancel shop 83548b3f
cloudhost apps builds redeploy shop 83548b3fاسکن سکرت#
کد هر بیلد پیش از ساخته شدن، در همان محیط ایزوله، برای کلیدها، توکنها و گذرواژههایی که به اشتباه در ریپازیتوری آمدهاند بررسی میشود. هر یافته فقط میگوید کجاست (فایل و خط) و چقدر احتمال دارد سکرت واقعی باشد (high یا low)؛ خود مقدار هرگز ذخیره یا نشان داده نمیشود.
با سیاست block (پیشفرض)، یک یافتهٔ high بیلد را متوقف میکند. سکرت را از کد بردارید، آن را باطل و جایگزین کنید و بهصورت متغیر محیطی حساس نگه دارید. با warn بیلد ادامه پیدا میکند و یافتهها در صفحهٔ استقرار دیده میشوند.
cloudhost apps builds secrets shop 83548b3f
cloudhost apps build-config set shop secret-scan warnفهرست اجزا (SBOM)#
هر بیلدی که فایل قفل دارد یک فهرست اجزا (SBOM) در قالب استاندارد CycloneDX 1.5 میگیرد: همهٔ بستههای npm با نسخهشان. آن را برای بررسی مجوزها، پاسخ به پرسشنامههای امنیتی یا ابزارهای خودتان دانلود کنید.
cloudhost apps builds sbom shop 83548b3f --output shop.cdx.jsonسند منشأ و بررسی آن#
هر بیلدی که مستقر میشود یک سند منشأ امضاشده دارد: چه چیزی بیلد شد (هش خروجی و نسخه)، از چه چیزی (کامیت یا هش کد، فایل قفل، هش SBOM)، کی و روی کدام ماشین بیلد. سند با کلید Ed25519 پلتفرم امضا میشود؛ بایتهای امضاشده CH-PROVENANCE-V1 و یک خط جدید و سپس سند بهصورت JSON مرتبشدهاند، پس با کلید عمومی (GET /v1/provenance/key) بیرون از پلتفرم هم بررسیپذیر است.
بررسی میگوید امضا درست است یا نه، و آیا این همان سندی است که پلتفرم برای آن بیلد نگه داشته است.
cloudhost apps builds provenance shop 83548b3f
cloudhost apps builds provenance shop 83548b3f --verifyخطاهای خوانای بیلد#
وقتی بیلدی ناموفق میشود، پلتفرم لاگ را میخواند و بالای آن توضیح میدهد چه شد، چرا و چطور درستش کنید؛ اگر خطا به یک فایل و خط اشاره کند، همان را نشان میدهد. CLI همین توضیح را هنگام دنبال کردن بیلد چاپ میکند.
| نوع | یعنی |
|---|---|
typescript | خطای نوع در کد؛ فایل و خط نشان داده میشود. |
module_not_found | بسته یا فایلی که import شده پیدا نشد؛ آن را به dependencies اضافه کنید یا مسیر را درست کنید. |
missing_env | متغیر محیطی لازم برای بیلد تعریف نشده است. |
out_of_memory | بیلد از حافظهٔ ماشین بیلد بیشتر خواست. |
timeout | بیلد از زمان مجاز بیشتر طول کشید. |
install_failed | نصب وابستگیها ناموفق بود (مثلاً تداخل نسخهها یا فایل قفل ناهماهنگ). |
secrets | اسکن سکرت بیلد را متوقف کرد. |
no_output | بیلد تمام شد ولی پوشهٔ خروجی پیدا نشد؛ output-dir را بررسی کنید. |
build_command_failed | فرمان بیلد با خطا تمام شد. |