GitHub-hosted runners ni chaguo-msingi zuri. Unaacha kuzihitaji mara build inapotaka kitu wasichonacho — private package registry yako, version mahususi ya toolchain uliyochoka kuisakinisha upya kila run, hifadhidata kwenye network yako, au udhibiti zaidi wa mashine. Hapo ndipo self-hosted runner kwenye VPS inakama nafasi yake.
Mwongozo huu unaipata moja ikiendesha vizuri: imesakinishwa, imeregisterwa, hai chini ya systemd, na — sehemu watu huikosea — salama. Tuanze na ile ya mwisho, kwa sababu ni sehemu inayouma.
Sheria moja ya usalama
GitHub Actions workflow huendesha code ya kiholela — chochote kilicho katika workflow file, na chochote code hiyo inavuta. Kwenye repo yako mwenyewe ni code yako, nayo ni sawa. Kwenye repo ya public, pull request kutoka mgeni inaweza kuendesha code yao kwenye runner yako. Hiyo si bug; ni jinsi CI inavyofanya kazi. Nyaraka za GitHub zenyewe zinasema waziwazi: usitumie self-hosted runners na public repositories.
Hivyo sheria ni rahisi na isiyo ya mazungumzo: self-hosted runners ni kwa private repos. Kama repo yako ni public, tumia GitHub-hosted runners na uendelee. Kila kitu hapa chini kinafikiri private repo.
Runner inahitaji nini kutoka sanduku
Inategemea build, nawe unapaswa kuweka saizi kwa yako badala ya namba kutoka ukurasa:
- Compile-and-test job ya kawaida — cores 2 na 4-8 GB ni starehe. Small ($8, 4 vCPU / 4 GB) au Medium ($12, 6 vCPU / 6 GB) hufunika nyingi za hizi.
- Builds nzito — native compiles kubwa, Docker image builds kubwa, test suites zenye njaa ya kumbukumbu — zinataka nafasi zaidi. Angalia run moja halisi (
htopinapobuild) na uweke saizi kwa kile unachokiona dhati, si matumaini.
Disk inahusika pia: build caches, Docker layers, na repos zilizoclonewa zinajumuika. Weka jicho na prune.
1. Andaa sanduku
Unda non-root user kwa runner — installer ya GitHub inakataa kuendesha kama root ateuti hivyo, nawe unaitaka hivyo:
sudo adduser --disabled-password --gecos "" runner
sudo usermod -aG sudo runner # tu kama builds zako dhati zinahitaji sudo
Sakinisha chochote builds zako zinahitaji — language toolchain, Docker, build tools. Kwa mfano, kama jobs zako zinabuild containers:
sudo apt update && sudo apt install -y docker.io
sudo usermod -aG docker runner
2. Pakua na uregister runner
Katika repo yako (au org) kwenye GitHub, nenda Settings → Actions → Runners → New self-hosted runner. GitHub inakupa amri halisi za download na registration token (ni ya muda mfupi — ichukue mpya). Kama runner user:
sudo -iu runner
mkdir actions-runner && cd actions-runner
# tumia URL halisi GitHub inayokuonyesha kwa OS/arch yako:
curl -o actions-runner-linux-x64.tar.gz -L "URL_FROM_GITHUB"
tar xzf actions-runner-linux-x64.tar.gz
./config.sh --url https://github.com/YOUR_ORG/YOUR_REPO --token YOUR_TOKEN
config.sh inauliza jina la runner, labels, na work folder — defaults ni sawa kuanza. Labels ni jinsi workflow yako inavyolenga runner hii (runs-on: self-hosted).
3. Iendeshe kama systemd service
Runner inakuja na helper inayosakinisha systemd service kwa ajili yako — itumie, ili runner ibaki kupitia reboots na restart kwenye ushindwe. Bado kama install ya runner user, lakini amri za service zinahitaji root:
sudo ./svc.sh install runner
sudo ./svc.sh start
sudo ./svc.sh status
Hiyo inaregister actions.runner.* kama systemd unit inayoendesha kama runner user, ikianza kwenye boot. Logs zinaenda journald:
sudo journalctl -u 'actions.runner.*' -f
Rudi kwenye ukurasa wa Runners wa GitHub, runner yako sasa inaonyesha Idle — nukta ya kijani. Elekeza workflow kwake:
jobs:
build:
runs-on: self-hosted
steps:
- uses: actions/checkout@v4
- run: make test
Push, na job inaendesha kwenye sanduku lako.
4. Iweke safi
Self-hosted runner hutumia tena filesystem yake kati ya jobs — hiyo ni ushindi wa kasi (caches za joto) na footgun (hali iliyobaki). Tabia mbili huiweka na afya:
- Prune mara kwa mara. Docker hasa —
docker system prunekwenye cron, au disk inajaa kimya na layers zilizokufa. - Usihifadhi secrets kwenye sanduku. Tumia GitHub Actions secrets, zilizoingizwa per-run, si faili zinazokaa katika home ya runner. Kama runner imesambaratika, chochote kwenye disk kinakwenda nayo.
Kama unahitaji mazingira safi dhati kwa job, endesha kila job ndani ya container step — runner inabaki, gharabu ya job haibaki.
Lini kujihifadhi, kwa uaminifu
Jihifadhi wakati unahitaji toolchain yako imepikwa ndani, ufikiaji wa rasilimali za private network, au udhibiti wa mashine. Baki kwenye GitHub-hosted runners wakati mazingira safi, ya kutupa na minutes zao yanakufaa — hilo ni rahisi zaidi dhati, na rahisi kunastahili kitu. Na kamwe, kwenye public repo, usijihifadhi. Hiyo si upendeleo.
Kama private-repo runner ndiyo unayohitaji: chagua mpango — Small ($8) kwa builds nyepesi, Medium ($12) zinapokuwa nzito zaidi — lipa kwa USDC au USDT (bila KYC, bila nyaraka), nawe utakuwa na root kwa takriban sekunde 60. Kisha fanya kazi chini ya ukurasa huu nawe utakuwa na runner ikichukua jobs dakika chache baadaye.
Maoni
Bado hakuna maoni. Kuwa wa kwanza.