runner ที่ GitHub โฮสต์สะดวกจนกว่าบิลหรือเวลารอเริ่มเจ็บ เกิน free tier คุณจ่ายต่อนาที cold-start ทุก job และดาวน์โหลด dependency ใหม่ทุกการรัน self-hosted runner บน VPS ของคุณเองพลิกทั้งสาม: ต้นทุนรายเดือนคงที่ เครื่อง warm ที่แคชของคุณอยู่บนดิสก์แล้ว และสภาพแวดล้อม build ที่คุณควบคุมเต็มที่ — เวอร์ชันเครื่องมือเจาะจง RAM มากขึ้น Docker layer cache ที่คงอยู่จริง
runner ต้องเข้าถึง GitHub ขาออกเท่านั้น ดังนั้นมันทำงานบนแพ็กเกจถูกที่สุดของเรา จ่ายด้วยคริปโต และไม่ต้อง KYC
runner ต้องการอะไร
- CPU และ RAM สำหรับ build ของคุณ Small ($8/เดือน — 4 vCPU, 4 GB RAM, 35 GB NVMe) คือค่าเริ่มต้นที่สบายสำหรับ CI ส่วนใหญ่: build Node/Go/Rust, ชุดเทสต์, build อิมเมจ Docker การคอมไพล์หนักหรือ job ขนาน? ขยับขึ้น Medium หรือแพ็กเกจ Pro
- ดิสก์ NVMe สำหรับแคช จุดประสงค์ทั้งหมดของการโฮสต์เองคือความคงอยู่ — dependency cache, Docker layer, build artifact อยู่บนดิสก์ระหว่างการรัน NVMe ทำให้การกู้คืนเร็ว
- ไม่ต้องมี dedicated IP runner โทรออกไปยัง GitHub ผ่าน HTTPS ไม่มีอะไรต้องเข้าถึงมันขาเข้า แพ็กเกจ NAT (จาก $3/เดือน) เพียงพอ เลือก dedicated IP เฉพาะหากคุณโฮสต์อะไรที่ให้บริการทราฟฟิกด้วย
ตั้ง runner (Ubuntu 24.04)
สร้าง runner ใน repo (หรือ org) ของคุณ: Settings → Actions → Runners → New self-hosted runner → Linux GitHub แสดงคำสั่งดาวน์โหลดและโทเคนลงทะเบียนใช้ครั้งเดียว บน VPS:
# ในฐานะผู้ใช้ที่ไม่ใช่ root (runner ปฏิเสธที่จะรันในฐานะ 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
# ลงทะเบียนด้วย URL + โทเคนจาก GitHub UI
./config.sh --url https://github.com/YOUR_ORG/YOUR_REPO --token YOUR_TOKEN
เก็บมันให้ทำงานเป็นบริการ
อย่ารัน ./run.sh ใน terminal — ติดตั้งมันเป็นบริการ systemd เพื่อให้มันรอดรีบูต:
sudo ./svc.sh install runner
sudo ./svc.sh start
sudo ./svc.sh status
runner ตอนนี้ปรากฏเป็น Idle ใน GitHub UI และรับ job ใดที่มุ่งเป้ามัน
ใช้มันจากเวิร์กโฟลว์
ชี้ job ไปยัง runner ของคุณด้วย runs-on:
jobs:
build:
runs-on: self-hosted # หรือ label ที่กำหนดเองที่คุณตั้งตอนลงทะเบียน
steps:
- uses: actions/checkout@v4
- run: make build && make test
job ที่ใช้ Docker
ติดตั้ง Docker ครั้งเดียวและเวิร์กโฟลว์ของคุณ build อิมเมจหรือรัน service container ได้ พร้อม layer cache ที่คงอยู่ระหว่างการรัน:
sudo apt update && sudo apt install -y docker.io
sudo usermod -aG docker runner # ให้ runner ใช้ Docker โดยไม่ต้อง sudo
สำหรับการแยกต่อ job แบบใช้แล้วทิ้ง รัน runner เองในคอนเทนเนอร์และสร้างมันใหม่ทุกการรัน — รูปแบบทั่วไปสำหรับ build ที่ไม่น่าเชื่อถือหรือ matrix
ทำไม EQVPS สำหรับ CI
- ต้นทุนคงที่ นาทีไม่จำกัด ไม่มีการวัดต่อนาที — ไปป์ไลน์ที่ยุ่งราคาเท่ากับตัวที่ว่าง
- แคช warm dependency และ Docker layer อยู่บน NVMe ระหว่างการรัน build เร็วขึ้น ไม่ใช่ช้าลง
- root ใน ~60 วินาที อิมเมจสะอาด Ubuntu, Debian และอื่น ๆ ผ่าน cloud-init ติดตั้ง toolchain ที่คุณต้องการพอดี
- ไม่ KYC จ่ายด้วยคริปโต อีเมลเพื่อสมัคร USDC/USDT เพื่อจ่าย สร้าง runner เพิ่มสำหรับช่วงเร่งปล่อยและยกเลิกหลังจากนั้น — เวลาที่จ่ายแล้วแต่ยังไม่ได้ใช้คืนเข้ายอดคงเหลือของคุณ
ความคิดเห็น
ยังไม่มีความคิดเห็น เป็นคนแรกสิ