runners מאוחסני-GitHub נוחים עד שהחשבון או זמן ההמתנה מתחילים לכאוב. מעבר לשכבת החינם אתם משלמים לפי דקה, עושים cold-start לכל job, ומורידים מחדש תלויות בכל ריצה. runner באחסון-עצמי על ה-VPS שלכם הופך את כל השלושה: עלות חודשית קבועה, מכונה חמה עם ה-caches שלכם כבר על הדיסק, וסביבת build שאתם שולטים בה לגמרי — גרסאות כלים ספציפיות, יותר RAM, cache של שכבות Docker שבאמת נשמר.
runner צריך רק להגיע ל-GitHub החוצה, אז הוא עובד על התוכניות הזולות ביותר שלנו, משלם בקריפטו, ולא צריך KYC.
מה runner צריך
- CPU ו-RAM ל-builds שלכם. Small ($8/חודש — 4 vCPU, 4 GB RAM, 35 GB NVMe) היא ברירת המחדל הנוחה לרוב ה-CI: builds של Node/Go/Rust, חבילות בדיקה, builds של image ב-Docker. קומפילציה כבדה או jobs מקבילים? עלו ל-Medium או לתוכנית Pro.
- דיסק NVMe ל-caches. כל העניין באחסון-עצמי הוא התמדה — caches של תלויות, שכבות Docker, ו-artifacts של build נשארים על הדיסק בין ריצות. NVMe שומר על שחזורים מהירים.
- ללא צורך ב-IP ייעודי. ה-runner מחייג החוצה ל-GitHub מעל HTTPS; שום דבר לא צריך להגיע אליו נכנס. תוכנית NAT (החל מ-$3/חודש) מספיקה. קחו IP ייעודי רק אם אתם גם מארחים-בעצמכם משהו שמשרת תעבורה.
הגדירו runner (Ubuntu 24.04)
צרו את ה-runner במאגר (או בארגון) שלכם: Settings → Actions → Runners → New self-hosted runner → Linux. GitHub מציג פקודת הורדה וטוקן רישום חד-פעמי. על ה-VPS:
# as a non-root user (the runner refuses to run as 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
# register with the URL + token from the GitHub UI
./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
ה-runner מופיע עכשיו כ-Idle ב-UI של GitHub ולוקח כל job שמכוון אליו.
השתמשו בו מ-workflow
כוונו job ל-runner שלכם עם runs-on:
jobs:
build:
runs-on: self-hosted # or a custom label you set at registration
steps:
- uses: actions/checkout@v4
- run: make build && make test
jobs מבוססי-Docker
התקינו את Docker פעם אחת וה-workflows שלכם יכולים לבנות images או להריץ קונטיינרים של שירות, עם cache שכבות שנשמר בין ריצות:
sudo apt update && sudo apt install -y docker.io
sudo usermod -aG docker runner # let the runner use Docker without sudo
לבידוד חד-פעמי לכל job, הריצו את ה-runner עצמו בתוך קונטיינר וצרו אותו מחדש בכל ריצה — דפוס נפוץ ל-builds לא-מהימנים או matrix.
למה EQVPS ל-CI
- עלות קבועה, דקות ללא הגבלה. ללא מדידה לפי דקה — pipeline עסוק עולה כמו בטל.
- caches חמים. תלויות ושכבות Docker נשארות על NVMe בין ריצות; builds נעשים מהירים יותר, לא איטיים יותר.
- root תוך ~60 שניות, images נקיים. Ubuntu, Debian ועוד דרך cloud-init; התקינו בדיוק את ה-toolchain שאתם צריכים.
- ללא KYC, תשלום בקריפטו. אימייל להרשמה, USDC/USDT לתשלום. הקימו runners נוספים ללחצי release ובטלו אותם אחר כך — זמן משולם שלא נוצל מוחזר ליתרה שלכם.
תגובות
אין עדיין תגובות. היו הראשונים.