−25%

על Windows בתשלום שנתי, עד 31.10. לחבילות

EQVPS
התחלה

ארגז חול ל-CI: הרצות בדיקה מבודדות בפחות מסנט להרצה

הריצו בדיקות לקוד שאינכם סומכים עליו — pull request מאדם זר, תיקון שנוצר אוטומטית — ב-microVM חדשה שנמחקת בסוף ההרצה. חיוב לפי שנייה, SDK ל-Python ול-TS, וכנות מלאה לגבי מגבלות ההרצה במקביל.

ל-runners של CI שמתארחים אצלכם יש תכונה מביכה אחת: הם זוכרים הכול. מטמונים, טוקנים, מפתח פריסה שמישהו הוסיף "זמנית" באביב שעבר. לענפים שלכם זה בסדר. הבעיה מתחילה ברגע שמגיע pull request ממישהו שמעולם לא שמעתם עליו — או מסוכן ה-AI שלכם, שכתב תיקון שאיש עוד לא קרא.

התשובה הנקייה היא מכונה לכל הרצה. לשכפל, להתקין, לבדוק, לזרוק את המכונה.

איך נראית הרצה

ארגז חול הוא Firecracker microVM שעולה בתוך כשנייה עם Python 3.12,‏ Node.js 22,‏ git ו-curl. אינטרנט יוצא עובד, כך ש-git clone ו-pip install -r requirements.txt מתנהגים כרגיל. אין פורטים נכנסים — שום דבר לא יכול להתחבר לסביבת הבדיקה בזמן שהיא רצה.

מתוך משימת CI, כל העניין הוא סקריפט קצר. הנה הוא עם ה-SDK של Python, ואפשר לקרוא לו מכל משימת CI:

import os, sys
from eqvps import Sandbox

repo, ref = os.environ["REPO_URL"], os.environ["PR_SHA"]

with Sandbox.create(tariff="standard", ttl=1800) as sb:
    sb.exec(f"git clone {repo} /root/app && cd /root/app && git checkout {ref}", timeout=55)
    sb.exec("cd /root/app && pip install -r requirements.txt", timeout=55)
    task = sb.exec("cd /root/app && python3 -m pytest -q", background=True)
    result = task.wait(on_output=lambda out, err: print(out, end=""))
sys.exit(result.exit_code or 0)

הטוקן נשמר בסודות של ה-CI בשם EQVPS_API_KEY. שום דבר אחר מה-CI שלכם — לא מפתחות פריסה ולא אישורי ענן — לא נכנס לארגז החול. כשבלוק ה-with מסתיים, ארגז החול נמחק, גם אם המשימה קרסה באמצע.

הרצת הבדיקות עצמה היא משימת רקע, כי פקודה סינכרונית אחת נעצרת אחרי 55 שניות. משימת רקע מזרימה פלט תוך כדי עבודה ויכולה להמשיך עד ה-TTL של ארגז החול — כאן הוא מוגדר ל-30 דקות, כדי שבדיקה תקועה לא תנפח את החשבון.

המגבלות שבאמת תיתקלו בהן

כנות לגביהן חוסכת לכם אחר צהריים שלם.

מקביליות. חשבון יכול להחזיק 20 ארגזי חול, אבל רק 2 פקודות רצות בו־זמנית. ב-CI אלה שתי משימות שרצות באמת במקביל. עשרה PR שמגיעים יחד ייכנסו לתור. אם ה-pipeline שלכם מפצל בדיקות ל-16 workers, זה לא הכלי הנכון ל-pipeline הראשי — השאירו אותו על ה-runners שלכם על VPS, והשתמשו בארגזי חול למסלול הלא אמין.

אין קונטיינרים בפנים. ‏Docker לא מגיע עם ארגז החול. בדיקות יחידה ואינטגרציה שצריכות קונטיינר Postgres לא יעבדו כמות שהן; בדיקות מול SQLite או מול אובייקט מדומה בזיכרון — כן.

קבצים. העלאה והורדה דרך ה-API מוגבלות ל-5 MB לקובץ. משכו את הקוד עם git בתוך ארגז החול במקום להעלות ארכיון.

כמה זה עולה

אתם משלמים עבור ה-vCPU וה-RAM של התעריף לפי שנייה, מינימום 60 שניות, מיתרה בתשלום מראש — בלי מנוי.

הרצהתעריףעלות משוערת
בדיקת סגנון + בדיקות יחידה, דקהsmall (0.5 vCPU, 1 GB)$0.0006
חבילה מלאה, 3 דקותstandard (1 vCPU, 2 GB)$0.0033
בנייה + בדיקות, 10 דקותplus (2 vCPU, 4 GB)$0.022

במחירים האלה השאלה המעניינת היא לא העלות, אלא האם הבדיקות מסתיימות בזמן שהגדרתם. תנו ל-TTL מרווח מעל ההרצה הירוקה האיטית ביותר שלכם.

חלוקה הגיונית

ההמלצה שלנו: השאירו ענפים אמינים על ה-runner המהיר שלכם עם המטמון. העבירו קודם דרך ארגז חול כל מה שלא כתבתם בעצמכם — forks, תורמים חיצוניים, תיקונים שנוצרו בידי סוכנים. אם ההרצה בארגז החול ירוקה ואדם הסתכל על ה-diff, קדמו אותה ל-pipeline האמין.

כך יש לכם מסלול אחד שבו המהירות והמטמון חשובים, ומסלול אחר שבו מכונה נקייה חשובה, בלי לכפות על כלי אחד להיות שניהם.

התחילו בסקירת ארגזי החול ובמדריך החיבור — חשבונות חדשים מקבלים 1 דולר של זמן ארגז חול, שמספיק לכמה מאות הרצות בדיקה קצרות. כל שיטה שהשתמשנו בה למעלה נמצאת במדריך ה-SDK, וכללי החיוב המדויקים במגבלות וחיוב של ארגזי חול.

קשור: ארגז חול לסקירת קוד ולבדיקות PR וארגז חול לסוכני AI.

מוכנים להקים? שלמו בקריפטו, ללא KYC — חי בערך תוך דקה.

הקימו עכשיו →

שאלות נפוצות

למה לא להריץ pull requests לא אמינים על ה-runner שלי שמתארח אצלי?

runner שמתארח אצלכם שומר מצב בין משימות ובדרך כלל מחזיק מפתחות פריסה או אישורי ענן. pull request ממישהו שאינכם מכירים יכול לקרוא אותם בצעד אחד. ארגז חול מתחיל נקי בכל פעם ואינו מכיל דבר מלבד הקוד הנבדק.

האם בדיקה יכולה לרוץ יותר מ-55 שניות?

כן. מגבלת 55 השניות חלה על כל פקודה סינכרונית. הפעילו את חבילת הבדיקות כמשימת רקע, בדקו את הפלט שלה מדי פעם, והיא תוכל לרוץ עד שתסתיים תוחלת החיים של ארגז החול — עד 24 שעות בארגז חול זמני.

כמה הרצות בדיקה יכולות לרוץ במקביל?

עד 20 ארגזי חול לחשבון, אבל רק 2 פקודות רצות בו־זמנית בכל חשבון. ב-CI זה אומר שתי משימות שרצות באמת במקביל; השאר ממתינות בתור. אם אתם צריכים פיצול מקבילי רחב, צי של runners על VPS מתאים יותר.

האם יש Docker בתוך ארגז החול?

ארגז החול מגיע עם Python 3.12,‏ Node.js 22,‏ bash,‏ git ו-curl, ואת התלויות מתקינים עם pip או npm. ‏Docker אינו חלק ממנו — אם הבדיקות שלכם מפעילות קונטיינרים, הריצו אותן על runner ב-VPS.

כמה עולה הרצה אחת?

לפי שנייה, מינימום 60 שניות, עבור ה-vCPU וה-RAM של התעריף. הרצה של שלוש דקות בתעריף standard‏ (1 vCPU,‏ 2 GB) עולה כ-0.0033 דולר.

תגובות

אין עדיין תגובות. היו הראשונים.

השאירו תגובה

התגובות עוברות מודרציה לפני שהן מופיעות.