−25%

Windows کی سالانہ ادائیگی پر، 31 اکتوبر تک۔ پلانز دیکھیں

EQVPS
شروع کریں

کوڈ ریویو اور PR جانچ کے لیے سینڈباکس: منظوری سے پہلے ثابت کریں کہ پیچ کام کرتا ہے

diff پڑھ کر پتا چلتا ہے کہ پیچ کیا دعویٰ کرتا ہے۔ اسے چلا کر پتا چلتا ہے کہ دعویٰ سچ ہے یا نہیں۔ pull request کو ایک بار استعمال ہونے والی microVM میں لائیں، تبدیلی سے پہلے اور بعد میں بگ دہرائیں، ٹیسٹ چلائیں اور ثبوت کے ساتھ ریویو کریں — ہر بار تقریباً آدھے سینٹ میں۔

ایک diff دکھاتا ہے کہ پیچ کیا کرنے کا دعویٰ کرتا ہے۔ یہ نہیں دکھاتا کہ بگ واقعی ختم ہوا یا نہیں، if کی نئی شاخ کبھی چلتی بھی ہے یا نہیں، یا ڈیپنڈنسی کا نیا ورژن صاف انسٹالیشن پر import توڑ دیتا ہے یا نہیں۔ ریویورز یہ جانتے ہیں، اسی لیے اتنے ریویو "LGTM، اگر ٹیسٹ پاس ہو جائیں" پر ختم ہوتے ہیں۔

AI کے لکھے پیچ کے ساتھ یہ خلا اور بڑھ جاتا ہے۔ ماڈل تیزی سے قابلِ یقین دکھنے والا کوڈ بنا دیتا ہے، اور قابلِ یقین دکھنے والا کوڈ ہی تھکے ہوئے ریویور کی نظر سے پھسل جاتا ہے۔ سستا حل یہ ہے کہ کسی کی منظوری سے پہلے تبدیلی کو چلایا جائے — ایسی جگہ جہاں وہ کچھ نقصان نہ کر سکے۔

جانچ: base، head، ٹیسٹ

کوئی پیچ جو سب سے قائل کرنے والا ثبوت دے سکتا ہے، وہ ایسا دہراؤ ہے جو پرانے کوڈ پر ناکام ہو اور نئے پر پاس ہو۔ سینڈباکس اسے 20 لائن کا اسکرپٹ بنا دیتا ہے۔ یہ Python 3.12، Node.js 22، git اور curl والی Firecracker microVM ہے، جو تقریباً ایک سیکنڈ میں شروع ہوتی ہے:

import os
from eqvps import Sandbox

REPO, BASE, HEAD = os.environ["REPO_URL"], os.environ["BASE_SHA"], os.environ["HEAD_SHA"]

def repro(sb, ref):
    sb.exec(f"cd /root/app && git checkout -q {ref}", timeout=55)
    return sb.exec("cd /root/app && python3 /root/repro.py", timeout=55).exit_code

with Sandbox.create(tariff="standard", ttl=1800) as sb:
    sb.exec(f"git clone -q {REPO} /root/app", timeout=55)
    sb.exec("cd /root/app && pip install -q -r requirements.txt", timeout=55)
    sb.upload("/root/repro.py", open("repro.py").read())
    before, after = repro(sb, BASE), repro(sb, HEAD)
    tests = sb.exec("cd /root/app && python3 -m pytest -q", background=True).wait()
    print(f"repro on base: {before}, on head: {after}; tests: {tests.state}, exit {tests.exit_code}")

فائل repro.py بگ رپورٹ کا کوڈ ٹکڑا ہے۔ اگر یہ base پر صفر کے سوا کسی کوڈ اور head پر صفر کے ساتھ ختم ہو، تو پیچ وہی ٹھیک کرتا ہے جس کا وہ دعویٰ کرتا ہے۔ وہ لائن اور ٹیسٹ کا خلاصہ pull request پر تبصرے کے طور پر ڈالیں، اور ریویور حقائق سے آغاز کرے گا۔

ٹیسٹ سویٹ بیک گراؤنڈ ٹاسک کے طور پر چلتا ہے کیونکہ ایک سنکرونس کمانڈ 55 سیکنڈ پر رک جاتی ہے۔ 30 منٹ کا TTL طے کرتا ہے کہ اٹکا ہوا رن زیادہ سے زیادہ کتنی دیر بل بنا سکتا ہے۔

کوڈ چلانے والے ریویو ایجنٹس

یہی خیال AI ریویور پر بھی لاگو ہوتا ہے۔ MCP سرور سے جڑے ایجنٹ کے پاس سینڈباکس اوزار ہوتے ہیں: سینڈباکس بنانا، کمانڈ چلانا، فائلیں اپ لوڈ اور ڈاؤن لوڈ کرنا۔ "یہ Python 3.8 کے ساتھ مطابقت توڑ سکتا ہے" لکھنے کے بجائے وہ برانچ لاتا ہے، کوڈ چلاتا ہے اور traceback کا حوالہ دیتا ہے — یا بتاتا ہے کہ سب ٹھیک ہے۔

ایسے ایجنٹ کو خرچ کی حد اور صرف پڑھنے والا ٹوکن دیں، اور طے کریں کہ وہ بغیر پوچھے کون سے اوزار بلا سکتا ہے۔ MCP حفاظتی تدابیر ہر اوزار کو خطرے کی سطح کے لحاظ سے درج کرتی ہیں۔

کون سا ٹیرف

ریپوزٹریٹیرفعام بارتخمینی لاگت
چھوٹی لائبریری، خالص Python یا JSsmall (0.5 vCPU, 1 GB)2 منٹ$0.0011
ٹیسٹ سویٹ والی ویب ایپstandard (1 vCPU, 2 GB)5 منٹ$0.0055
نیٹو ایکسٹینشنز، کمپائل ہونے والی ڈیپنڈنسیزplus (2 vCPU, 4 GB)15 منٹ$0.033

عارضی سینڈباکس کا بل فی سیکنڈ بنتا ہے، کم از کم 60 سیکنڈ۔ اگر ریویور چند دنوں تک اسی ماحول میں لوٹنا چاہتا ہے تو اسے persistent کے طور پر بنائیں: وہ اپنی ڈسک 30 دن تک رکھتا ہے اور ہر شروع ہونے والے گھنٹے کا بل بنتا ہے، اس لیے دو دن کے ریویو کے لیے رکھا گیا standard سینڈباکس تقریباً 3.17 ڈالر کا پڑتا ہے۔ pull request ضم ہونے پر اسے حذف کر دیں۔

جاننے کے لائق حدود

  • ہر اکاؤنٹ میں ایک وقت میں دو کمانڈز۔ ایک کے بعد ایک ہونے والے ریویو کے لیے کافی۔ اگر آپ درجنوں pull requests ایک ساتھ جانچیں تو وہ قطار میں لگیں گے۔
  • اندر آنے والے پورٹ نہیں۔ آپ ایپ کو براؤزر میں نہیں کھول سکتے۔ اسے اندر شروع کریں اور دوسری کمانڈ سے curl localhost کے ذریعے ٹیسٹ کریں۔
  • اندر Docker نہیں۔ کنٹینر چلانے والے ٹیسٹ VPS پر runner میں ہونے چاہییں۔
  • باہر جانے والا انٹرنیٹ کھلا ہے۔ اسی سے pip install کام کرتا ہے۔ سینڈباکس میں ایسا کچھ نہ رکھیں جو آپ پیچ کے مصنف کو نہ دیتے۔

آغاز کیسے کریں

نئے اکاؤنٹس کو 1 ڈالر کا سینڈباکس وقت ملتا ہے، جو standard ٹیرف پر سو سے زیادہ ریویو کے لیے کافی ہے۔ سینڈباکس صفحے پر ٹیرف ہیں، SDK حوالہ میں اوپر استعمال ہونے والا ہر طریقہ، اور 5 منٹ میں Python SDK میں سیٹ اپ۔

متعلقہ: پوری پائپ لائن کے لیے الگ CI ٹیسٹ رن، اور کوڈ لکھنے والے ایجنٹس کے لیے AI ایجنٹس کے لیے سینڈباکس۔

تعینات کے لیے تیار؟ کرپٹو میں ادائیگی کریں، بغیر KYC — تقریباً ایک منٹ میں لائیو۔

ابھی ڈیپلائے کریں →

عمومی سوالات

یہ pull request پر CI چلانے سے کیسے مختلف ہے؟

سسٹم CI بتاتا ہے کہ موجودہ ٹیسٹ پاس ہوتے ہیں یا نہیں۔ ریویو جانچ بتاتی ہے کہ پیچ وہی کرتا ہے جو وہ کہتا ہے: بگ رپورٹ سے دہرانے والا کوڈ پرانے اور نئے دونوں کوڈ پر چلاتی ہے، وہ کنارے کا معاملہ آزماتی ہے جس کی ریویور کو فکر ہے، اور ایک سینڈباکس رکھتی ہے جس میں ریویور خود کھوج لگا سکے۔ دونوں مل کر اچھا کام کرتے ہیں۔

کیا AI ریویو ایجنٹ اسے استعمال کر سکتا ہے؟

جی ہاں، اور سب سے زیادہ فائدہ وہیں ہے۔ MCP کے ذریعے ایجنٹ کو سینڈباکس بنانے، کمانڈز چلانے اور فائلیں پڑھنے کے اوزار ملتے ہیں۔ یہ اندازہ لگانے کے بجائے کہ تبدیلی کچھ توڑے گی یا نہیں، وہ کوڈ چلاتا ہے اور ریویو میں آؤٹ پٹ کا حوالہ دیتا ہے۔

کیا کسی اجنبی کا pull request لانا محفوظ ہے؟

سینڈباکس اسی لیے ہے۔ کوڈ اپنے کرنل والی الگ microVM میں چلتا ہے، اور اس میں آپ کی رکھی چیزوں کے سوا آپ کا کچھ نہیں ہوتا۔ ایسا ٹوکن نہ دیں جو آپ کی ریپوزٹری میں لکھ سکے؛ نجی ریپوزٹری کے لیے صرف پڑھنے والا ٹوکن کافی ہے۔

کیا میں pull request کی ایپ اپنے براؤزر میں کھول سکتا ہوں؟

نہیں۔ سینڈباکس میں اندر آنے والے پورٹ نہیں ہوتے، اس لیے باہر سے کوئی ان سے نہیں جڑ سکتا۔ آپ ایپ کو اندر شروع کر کے دوسری کمانڈ سے curl کے ذریعے ٹیسٹ کر سکتے ہیں، یا اگر ریویورز کو انٹرفیس پر کلک کرنا ہو تو پری ویو VPS پر ڈیپلائے کر سکتے ہیں۔

ایک ریویو کی لاگت کتنی ہے؟

ایک عام بار — کلون، انسٹال، دو بار دہرانا، ٹیسٹ چلانا — standard ٹیرف پر چند منٹ لیتا ہے اور تقریباً 0.005 ڈالر کا پڑتا ہے۔ آپ پیشگی ادا شدہ بیلنس سے فی سیکنڈ ادائیگی کرتے ہیں، کم از کم 60 سیکنڈ۔

تبصرے

ابھی کوئی تبصرہ نہیں۔ پہلے بنیں۔

ایک تبصرہ چھوڑیں

تبصرے ظاہر ہونے سے پہلے moderate کیے جاتے ہیں۔