د CI خپل کوربه runners یوه ناوړه عادت لري: هر څه یې په یاد وي. کیش، ټوکنونه، د ډیپلای یوه کلي چې چا تېر پسرلي "لنډمهاله" ورزیاته کړې وه. ستاسو د خپلو برانچونو لپاره دا سمه ده. ستونزه هغه وخت پیلېږي چې د داسې چا pull request راشي چې نوم یې مو هېڅکله نه وي اورېدلی — یا ستاسو د خپل AI اجنټ له لوري، چې داسې پېچ یې لیکلی چې لا تر اوسه چا نه دی لوستی.
پاک ځواب دا دی: د هر چلولو لپاره یو ماشین. کلون کړئ، نصب کړئ، ټېسټ کړئ، ماشین وغورځوئ.
یو چلول څنګه ښکاري
sandbox یو Firecracker microVM دی چې شاوخوا په یوه ثانیه کې د Python 3.12، Node.js 22، git او curl سره چالانېږي. بهر ته انټرنېټ کار کوي، نو git clone او pip install -r requirements.txt د تل په څېر چلېږي. دننه ته پورټونه نشته — د چلېدو پر مهال هېڅ شی د ټېسټ چاپېریال سره نښلېدای نه شي.
د CI دندې له نظره ټوله چاره یو لنډ سکرېپټ دی. دا یې د Python SDK نسخه ده، چې له هرې 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 بل هېڅ شی — نه د ډیپلای کلیګانې او نه د کلاوډ اسناد — sandbox ته نه ځي. کله چې د with بلاک پای ته ورسېږي، sandbox ړنګېږي، که څه هم دنده په منځ کې خرابه شوې وي.
پخپله د ټېسټ چلول یوه شالیدي دنده ده، ځکه چې یوه همزماني کمانډ په 55 ثانیو کې درېږي. شالیدي دنده د کار پر مهال خپله خروجي لېږي او د sandbox تر TTL پورې دوام کولی شي — دلته 30 دقیقې ټاکل شوې ترڅو بند پاتې ټېسټ بیل لوړ نه کړي.
هغه حدود چې په رښتیا به ورسره مخ شئ
د دوی په اړه رڼا خبرې ستاسو یو بشپړ ماسپښین سپموي.
همزماني. یو حساب کولی شي 20 sandboxes ولري، خو په یو وخت کې یوازې 2 کمانډونه چلېږي. د CI لپاره دا دوه دندې دي چې رښتیا موازي چلېږي. لس PR چې یوځای راشي، په کتار کې به ودرېږي. که ستاسو پایپلاین ټېسټونه په 16 workers وېشي، د اصلي پایپلاین لپاره دا سمه وسیله نه ده — هغه په VPS باندې په خپلو runners وساتئ او sandboxes د بېباوره لارې لپاره وکاروئ.
دننه کانټینر نشته. Docker د sandbox سره نه راځي. هغه یونټ او انټګرېشن ټېسټونه چې Postgres کانټینر ته اړتیا لري، لکه څنګه چې دي نه چلېږي؛ هغه ټېسټونه چې پر SQLite یا په حافظه کې پر جعلي شي چلېږي، چلېږي.
فایلونه. د API له لارې پورته کول او ښکته کول د هر فایل لپاره تر 5 MB پورې دي. د آرشیف پر ځای، کوډ د sandbox دننه په git راوړئ.
لګښت یې څومره دی
تاسو د تعرفې د vCPU او RAM لپاره په ثانیه پیسې ورکوئ، لږ تر لږه 60 ثانیې، له مخکې ورکړل شوي بیلانس څخه — پرته له ګډون.
| چلول | تعرفه | اټکلي لګښت |
|---|---|---|
| لېنټ + یونټ ټېسټونه، 1 دقیقه | 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، بهرني مرستهکوونکي، د اجنټانو جوړ کړي پېچونه — لومړی د sandbox له لارې تېر کړئ. که د sandbox چلول بریالی و او یو انسان diff ته کتلي وي، هغه باوري پایپلاین ته پورته کړئ.
په دې ډول تاسو یوه لار لرئ چې چټکتیا او کیش پکې مهم دي، او بله لار چې پاک ماشین پکې مهم دی — پرته له دې چې یوه وسیله دواړو ته اړ کړئ.
له د sandboxes پېژندنې او د نښلولو لارښود څخه پیل وکړئ — نوي حسابونه 1 ډالر د sandbox وخت ترلاسه کوي، چې د څو سوو لنډو ټېسټونو لپاره بس دی. پورته کارول شوې هره طریقه په د SDK مرجع کې ده، او دقیق د بیلینګ قواعد په د sandbox حدود او بیلینګ کې.
اړوند: د کوډ بیاکتنې او PR چک لپاره sandbox او د AI اجنټانو لپاره sandbox.
تبصرې
لا تبصرې نشته. لومړی اوسئ.