رفتن به محتوا
cloudhostمستندات
محصولات

بیلد‌ها: تنظیمات، کش، صف و زنجیرهٔ تأمین

هر بیلد روی ماشین‌های بیلد ما، در محیطی ایزوله اجرا می‌شود. این صفحه می‌گوید چطور بیلد را تنظیم کنید، کش چه می‌کند، صف چطور کار می‌کند و هر بیلد چه مدارکی از خود به جا می‌گذارد.

تنظیمات بیلد#

هر برنامه و فانکشن تنظیمات بیلد خودش را دارد. چیزی را که خالی بگذارید، پلتفرم از روی پروژه تشخیص می‌دهد. تغییرها از بیلد بعدی اعمال می‌شوند؛ بیلدی که در حال اجراست با تنظیماتی که با آن شروع شده تمام می‌شود.

تنظیمچه می‌کند
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-scanblock (پیش‌فرض): سکرتِ احتمالاً واقعی در کد بیلد را متوقف می‌کند؛ 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فرمان بیلد با خطا تمام شد.