GitHub ہوسٹڈ رنرز اُس وقت تک آسان ہیں جب تک بل یا انتظار کا وقت تکلیف دینا شروع نہ کرے۔ مفت حد سے اوپر آپ فی منٹ ادا کرتے ہیں، ہر job «ٹھنڈا» شروع ہوتا ہے اور ہر بار ڈیپینڈنسیز دوبارہ ڈاؤن لوڈ کرتا ہے۔ آپ کے اپنے VPS پر ایک سیلف ہوسٹڈ رنر ان تینوں کو پلٹ دیتا ہے: مقررہ ماہانہ لاگت، ایک «گرم» مشین جس کی کیش پہلے سے ڈسک پر ہے، اور ایک بلڈ ماحول جسے آپ مکمل کنٹرول کرتے ہیں — مخصوص ٹول ورژنز، زیادہ RAM، اور ایک Docker لیئر کیش جو واقعی برقرار رہتی ہے۔
ایک رنر کو صرف GitHub تک باہر جانے والی رسائی چاہیے، لہٰذا یہ ہمارے سستے ترین پلانز پر چلتا ہے، کرپٹو سے ادا ہوتا ہے، اور KYC کی ضرورت نہیں۔
ایک رنر کو کیا چاہیے
- آپ کی بلڈز کے لیے CPU اور RAM۔ Small ($8/ماہ — 4 vCPU، 4 GB RAM، 35 GB NVMe) زیادہ تر CI کے لیے آرام دہ ڈیفالٹ ہے: Node/Go/Rust بلڈز، ٹیسٹ سویٹس، Docker امیج بلڈز۔ بھاری کمپائلیشن یا متوازی jobs؟ Medium یا Pro پلان پر جائیں۔
- کیش کے لیے NVMe ڈسک۔ سیلف ہوسٹنگ کا پورا مقصد برقراری ہے — ڈیپینڈنسی کیش، Docker لیئرز، اور بلڈ آرٹیفیکٹس رنز کے درمیان ڈسک پر رہتے ہیں۔ NVMe بحالی کو تیز رکھتا ہے۔
- ڈیڈیکیٹڈ IP کی ضرورت نہیں۔ رنر HTTPS پر GitHub کو کال کرتا ہے؛ کوئی اِن باؤنڈ رسائی نہیں چاہیے۔ ایک NAT پلان ($3/ماہ سے) کافی ہے۔ ڈیڈیکیٹڈ IP صرف تب لیں جب آپ کوئی ایسی چیز بھی ہوسٹ کریں جو ٹریفک فراہم کرتی ہو۔
ایک رنر ترتیب دیں (Ubuntu 24.04)
اپنی ریپازٹری (یا تنظیم) میں رنر بنائیں: Settings → Actions → Runners → New self-hosted runner → Linux۔ GitHub ایک ڈاؤن لوڈ کمانڈ اور ایک بار استعمال ہونے والا رجسٹریشن ٹوکن دکھاتا ہے۔ VPS پر:
# بطور نان root صارف (رنر root کے طور پر چلنے سے انکار کرتا ہے)
adduser --disabled-password --gecos "" runner
su - runner
mkdir actions-runner && cd actions-runner
curl -o actions-runner-linux-x64.tar.gz -L \
https://github.com/actions/runner/releases/latest/download/actions-runner-linux-x64.tar.gz
tar xzf actions-runner-linux-x64.tar.gz
# GitHub انٹرفیس کے URL + ٹوکن سے رجسٹر کریں
./config.sh --url https://github.com/YOUR_ORG/YOUR_REPO --token YOUR_TOKEN
اسے بطور سروس چلتا رکھیں
./run.sh کو ٹرمینل میں نہ چلائیں — رنر کو systemd سروس کے طور پر انسٹال کریں تاکہ یہ ری بوٹ برداشت کرے:
sudo ./svc.sh install runner
sudo ./svc.sh start
sudo ./svc.sh status
رنر اب GitHub انٹرفیس میں Idle کے طور پر ظاہر ہوتا ہے اور اپنی طرف ہدف بنائے گئے کسی بھی job کو اٹھا لیتا ہے۔
ایک workflow سے استعمال کریں
runs-on کے ساتھ ایک job کو اپنے رنر کی طرف بھیجیں:
jobs:
build:
runs-on: self-hosted # یا رجسٹریشن پر مقرر کردہ ایک کسٹم لیبل
steps:
- uses: actions/checkout@v4
- run: make build && make test
Docker پر مبنی jobs
Docker ایک بار انسٹال کریں، اور آپ کے workflows امیجز بنا سکتے ہیں یا سروس کنٹینرز چلا سکتے ہیں، لیئر کیش رنز کے درمیان برقرار رہتی ہے:
sudo apt update && sudo apt install -y docker.io
sudo usermod -aG docker runner # رنر کو sudo کے بغیر Docker استعمال کرنے دیں
فی job ایک بار استعمال ہونے والی آئسولیشن کے لیے، رنر کو خود ایک کنٹینر میں چلائیں اور ہر رن پر اسے دوبارہ بنائیں — غیر بھروسہ مند یا میٹرکس بلڈز کے لیے ایک عام طریقہ۔
CI کے لیے EQVPS کیوں
- مقررہ لاگت، لامحدود منٹ۔ فی منٹ پیمائش نہیں — ایک مصروف پائپ لائن اتنی ہی لاگت رکھتی ہے جتنی ایک فارغ۔
- «گرم» کیش۔ ڈیپینڈنسیز اور Docker لیئرز رنز کے درمیان NVMe پر رہتے ہیں؛ بلڈز سست نہیں، تیز ہوتی ہیں۔
- ~60 سیکنڈ میں root، صاف امیجز۔ cloud-init کے ذریعے Ubuntu، Debian اور مزید؛ بالکل وہی ٹول چین انسٹال کریں جو آپ کو چاہیے۔
- بغیر KYC، کرپٹو سے ادائیگی۔ رجسٹر کے لیے ای میل، ادائیگی کے لیے USDC/USDT۔ ریلیز کے دباؤ کے لیے اضافی رنرز چلائیں اور بعد میں منسوخ کریں — غیر استعمال شدہ ادا شدہ وقت آپ کے بیلنس میں واپس آ جاتا ہے۔
تبصرے
ابھی کوئی تبصرہ نہیں۔ پہلے بنیں۔