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

بررسی‌ها و آسیب‌پذیری‌ها

نسخهٔ جدید تا نگذراندن بررسی‌هایی که خودتان خواسته‌اید، به پروداکشن نمی‌رود؛ و هر بیلد وابستگی‌هایش را با پایگاه توصیه‌های امنیتی می‌سنجد.

چطور کار می‌کند#

بیلد پروداکشن یک پروژه که بررسی دارد، «مرحله‌ای» است: نسخه ساخته و آپلود می‌شود، اما تا موفق شدن همهٔ بررسی‌های الزامی در پروداکشن نمی‌آید و بازدیدکننده‌ها نسخهٔ قبلی را می‌بینند. پیش‌نمایش‌ها (هر شاخه جز main) بررسی‌ها را نشان می‌دهند و هیچ‌وقت متوقف نمی‌شوند. استقرار مستقیم با cloudhost deploy از دستگاه شما بررسی ندارد؛ بررسی‌ها به بیلد‌های روی ساختگر ما بسته‌اند.

بررسیچه می‌کند
smokeپیش از پروداکشن شدن، یک درخواست GET به نسخهٔ جدید (با متغیرها و اتصال‌های پروداکشن) فرستاده می‌شود و باید ۲xx بدهد. همهٔ پلن‌ها.
testدستور آزمون پروژه (مثلاً npm test) در همان محیط ایزولهٔ بیلد، پس از نصب وابستگی‌ها. پلن حرفه‌ای.
typecheckبررسی نوع، پیش‌فرض npx tsc --noEmit. پلن حرفه‌ای.
نام‌های بیرونی، مثلاً ci/unitهر چیزی که CI شما از راه API گزارش می‌کند. پلن حرفه‌ای.

بررسی‌ای که تا مهلت (check_timeout_minutes، پیش‌فرض ۱۵ دقیقه) تمام نشود ناموفق حساب می‌شود. اگر یک بررسی الزامی ناموفق شود یا وقتش تمام شود، نسخه متوقف می‌شود و نسخهٔ قبلی فعال می‌ماند. اگر در همین فاصله بیلد جدیدتری در پروداکشن قرار بگیرد، این یکی «جایش گرفته شده» حساب می‌شود و دیگر منتشر نمی‌شود.

آزمون و بررسی نوع نتیجهٔ خودِ بیلد شما هستند، یعنی کدی که شما نوشته‌اید آن‌ها را اجرا می‌کند. برای اطمینان مستقل، بررسی بیرونی از CI خودتان بگذارید.

تنظیمات#

در داشبورد: پروژه ← تنظیمات ← بیلد و استقرار. با API: GET و PUT روی /v1/functions/<name>/build-settings یا /v1/apps/<name>/build-settings (مالک یا ادمین).

فیلدمقدار
smoke, smoke_pathروشن یا خاموش، و مسیر (پیش‌فرض /)
test_commandیک خط، تا ۳۰۰ کاراکتر، یا null
typecheck, typecheck_commandروشن یا خاموش، و دستور
required_checksتا ۱۰ نام بیرونی، با حروف کوچک، رقم و . _ / -
check_timeout_minutes۱ تا ۶۰
scan_fail_onnone، high (بحرانی و زیاد) یا critical
cloudhost functions checks set my-api --smoke /health --test "npm test" --typecheck on --require ci/unit,lint --timeout 20
cloudhost functions checks settings my-api

گزارش بررسی از CI#

هر بیلد یک شناسه دارد (cloudhost builds my-api). CI شما وضعیت یک بررسی را با PUT می‌فرستد: running، passed یا failed، با یک خلاصه، آدرس جزئیات و لاگ (تا ۶۴ کیلوبایت). نام بررسی‌ای که در required_checks هست الزامی می‌شود؛ تا گزارش نشود «منتظر گزارش» است.

curl -X PUT -H "Authorization: Bearer $KEY" \
  https://api.ibel.ai/v1/functions/my-api/deployments/$BUILD/checks/ci%2Funit \
  -d '{"status":"passed","summary":"412 tests","url":"https://ci.example.com/run/88"}'

نام‌های test، typecheck و smoke برای ساختگر محفوظ‌اند. یک استقرار تا ۳۰ بررسی دارد.

اجرای دوباره و انتشار#

  • اجرای دوباره: بررسی درخواست آزمایشی دوباره اجرا می‌شود؛ بررسی بیرونی به «منتظر گزارش» برمی‌گردد؛ آزمون و بررسی نوع یک ایجاد جدید از همان کد را در صف می‌گذارند. گزارش دوبارهٔ موفق از CI برای ایجاد متوقف‌شده هم آن را دوباره به انتظار برمی‌گرداند.
  • انتشار بدون انتظار (مالک یا ادمین): نسخهٔ منتظر یا متوقف را همین حالا در پروداکشن می‌گذارد؛ در گزارش حسابرسی ثبت می‌شود.
CLI
cloudhost functions checks my-api            # the latest build
cloudhost functions checks rerun my-api $BUILD smoke
cloudhost functions checks promote my-api $BUILD

بررسی آسیب‌پذیری وابستگی‌ها#

هر بیلد، فایل قفل ریشهٔ پروژه (package-lock.json، pnpm-lock.yaml یا yarn.lock) را می‌خواند و بسته‌ها را با پایگاه توصیه‌های امنیتی ما مقایسه می‌کند. نتیجه برای هر استقرار می‌ماند: بسته، نسخه، شدت، شناسهٔ توصیه و نسخهٔ اصلاح‌شده. فایل قفل فقط خوانده می‌شود، کدی اجرا نمی‌شود، و بررسی بدون دسترسی به اینترنت انجام می‌شود. پروژه‌ای بدون فایل قفل بررسی نمی‌شود و بیلد آن خبر می‌دهد.

پایگاه توصیه‌ها نسخهٔ خودمان از داده‌های عمومی توصیه‌های امنیتی بستهٔ npm است و هر ۶ ساعت از داخل خود پلتفرم به‌روز می‌شود. هر نتیجه می‌گوید داده چقدر قدیمی است؛ اگر بیش از ۷ روز بی‌به‌روزرسانی بماند «قدیمی» نشان داده می‌شود.

scan_fail_on بیلدی را که وابستگی بحرانی (critical) یا بحرانی و زیاد (high) دارد، پیش از آنکه محیط بیلد را بگیرد، ناموفق می‌کند. صاحبان و توسعه‌دهنده‌های تیم اعلان می‌گیرند: یک اعلان وقتی بیلد متوقف شد، و یک اعلان وقتی وابستگی جدی پیدا شد و بیلد ادامه یافت.

cloudhost functions vulns my-api            # the project's summary
cloudhost functions vulns my-api $BUILD     # one build's findings
cloudhost functions vulns rescan my-api $BUILD
توصیه‌های جدید بعد از بیلد منتشر می‌شوند: «بررسی دوباره» فایل قفل همان بیلد را با داده‌های امروز مقایسه می‌کند.