−25%

د Windows پر کلنۍ تادیه، تر ۳۱ اکتوبر. پلانونه وګورئ

EQVPS
پیل وکړئ

د CI لپاره sandbox: جلا ټېسټونه، په هر چلولو کې له یوه سنټ څخه لږ

د هغه کوډ ټېسټونه چې باور پرې نه لرئ — د یو ناپېژندل شوي کس pull request، یا په اتومات ډول جوړ شوی پېچ — په یوه نوي microVM کې وچلوئ چې له چلولو وروسته ړنګېږي. په ثانیه بیلینګ، د Python او TS لپاره SDK، او د همزمان چلولو د حدودو په اړه رڼې خبرې.

د 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.

د ځای پرځای کولو لپاره چمتو یاست؟ په crypto تادیه، بې KYC — شاوخوا یوه دقیقه کې چمتو.

اوس ځای پرځای کړئ →

پوښتنې

ولې بې‌باوره pull requests په خپل self-hosted runner ونه چلوم؟

یو self-hosted runner د دندو ترمنځ حالت ساتي او معمولاً د ډیپلای کلیګانې یا د کلاوډ اسناد پکې وي. د یو ناپېژندل شوي کس pull request کولی شي هغه په یوه ګام کې ولولي. sandbox هر ځل پاک پیلېږي او له ټېسټ کېدونکي کوډ پرته پکې هېڅ نه وي.

ایا یو ټېسټ له 55 ثانیو ډېر چلېدلی شي؟

هو. د 55 ثانیو حد د هرې همزماني کمانډ لپاره دی. د ټېسټ مجموعه د شالید دندې په توګه پیل کړئ، وخت ناوخت یې خروجي وګورئ، او تر هغه چلېږي چې د sandbox عمر پای ته ورسېږي — د لنډمهاله sandbox لپاره تر 24 ساعتونو.

څومره ټېسټونه په یو وخت چلېدلی شي؟

په هر حساب کې تر 20 sandboxes، خو په هر حساب کې په یو وخت کې یوازې 2 کمانډونه چلېږي. د CI لپاره دا مانا لري چې دوه دندې رښتیا په یو وخت چلېږي؛ پاتې په کتار کې پاتې کېږي. که پراخ موازي وېش ته اړتیا لرئ، په VPS باندې د runners یوه ډله ښه ده.

ایا د sandbox دننه Docker شته؟

په sandbox کې Python 3.12، Node.js 22، bash، git او curl شته، او اړتیاوې په pip یا npm نصبوئ. Docker پکې نشته — که ستاسو ټېسټونه کانټینرونه چلوي، هغه په VPS کې پر runner وچلوئ.

د یو چلولو لګښت څومره دی؟

په ثانیه، لږ تر لږه 60 ثانیې، د تعرفې د vCPU او RAM لپاره. د standard تعرفې (1 vCPU، 2 GB) پر سر درې دقیقې چلول شاوخوا 0.0033 ډالر لګښت لري.

تبصرې

لا تبصرې نشته. لومړی اوسئ.

یوه تبصره پریږدئ

تبصرې د ښکاره کیدو مخکې اعتدال کیږي.