بررسیها و آسیبپذیریها
نسخهٔ جدید تا نگذراندن بررسیهایی که خودتان خواستهاید، به پروداکشن نمیرود؛ و هر بیلد وابستگیهایش را با پایگاه توصیههای امنیتی میسنجد.
چطور کار میکند#
بیلد پروداکشن یک پروژه که بررسی دارد، «مرحلهای» است: نسخه ساخته و آپلود میشود، اما تا موفق شدن همهٔ بررسیهای الزامی در پروداکشن نمیآید و بازدیدکنندهها نسخهٔ قبلی را میبینند. پیشنمایشها (هر شاخه جز main) بررسیها را نشان میدهند و هیچوقت متوقف نمیشوند. استقرار مستقیم با cloudhost deploy از دستگاه شما بررسی ندارد؛ بررسیها به بیلدهای روی ساختگر ما بستهاند.
| بررسی | چه میکند |
|---|---|
smoke | پیش از پروداکشن شدن، یک درخواست GET به نسخهٔ جدید (با متغیرها و اتصالهای پروداکشن) فرستاده میشود و باید ۲xx بدهد. همهٔ پلنها. |
test | دستور آزمون پروژه (مثلاً npm test) در همان محیط ایزولهٔ بیلد، پس از نصب وابستگیها. پلن حرفهای. |
typecheck | بررسی نوع، پیشفرض npx tsc --noEmit. پلن حرفهای. |
نامهای بیرونی، مثلاً ci/unit | هر چیزی که CI شما از راه API گزارش میکند. پلن حرفهای. |
بررسیای که تا مهلت (check_timeout_minutes، پیشفرض ۱۵ دقیقه) تمام نشود ناموفق حساب میشود. اگر یک بررسی الزامی ناموفق شود یا وقتش تمام شود، نسخه متوقف میشود و نسخهٔ قبلی فعال میماند. اگر در همین فاصله بیلد جدیدتری در پروداکشن قرار بگیرد، این یکی «جایش گرفته شده» حساب میشود و دیگر منتشر نمیشود.
تنظیمات#
در داشبورد: پروژه ← تنظیمات ← بیلد و استقرار. با 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_on | none، 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 برای ایجاد متوقفشده هم آن را دوباره به انتظار برمیگرداند.
- انتشار بدون انتظار (مالک یا ادمین): نسخهٔ منتظر یا متوقف را همین حالا در پروداکشن میگذارد؛ در گزارش حسابرسی ثبت میشود.
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