Build Server — egy dedikált szerver vagy virtuális gép, amely automatikusan lefordítja a forráskódot, futtatja a teszteket és kész artefaktumokat hoz létre. Központi csomópontként szolgál a CI/CD infrastruktúra számára és átveszi az építési feladatokat, tehermentesítve a fejlesztők helyi gépeit. A GitLab Global DevSecOps Report, 2025 jelentés szerint a csapatok 67%-á használ dedikált build szervereket a stabilitás és a fordítási sebesség növelésére.
Főbb pontok
Build Server (fordító szerver) — egy speciális számítógépes rendszer, amely a kód fordításával és a kiadások előkészítésével kapcsolatos feladatok automatikus végrehajtására szolgál. Ellentétben a fejlesztő gépén történő helyi fordítással, a szerver a repository másolatával dolgozik, tiszta környezetet és rögzített függőségi verziókat használ.
A build szerver a Continuous Integration gyakorlatának kulcsfontosságú összetevője. Garantálja, hogy minden commit ugyanazon az ellenőrzési folyamaton menjen keresztül, függetlenül attól, hogy ki végezte el. Ez kiküszöböli a „na gépemen működik” problémát és egységes minőségi szabványt biztosít.
A Google DORA, 2025 adatai szerint a dedikált build szervert használó csapatok órákról percekre csökkentik a változtatások jóváhagyási idejét. Ez közvetlenül befolyásolja a funkciók és javítások végfelhasználókhoz történő eljuttatásának sebességét.
A mobilalkalmazások fordítása jelentŕs erőforrásokat igényel: a Kotlin vagy Swift fordítása 5-től 40 percig is tarthat. Ha a fordítást a fejlesztő helyi gépén futtatják, addig nem tud produktívan dolgozni, amíg be nem fejeződik. A build szerver megoldja ezt a problémát, felszabadítva a fejlesztőt más feladatok számára.
A gyakorlatban a kifejezéseket gyakran szinonimáként használják, de van különbség: CI szerver (Jenkins, CircleCI) — a csővezetékeket kezelő rendszer, míg a build szerver — az a fizikai vagy virtuális gazdagép, amelyen ezek a csővezetékek futnak. Egy CI szerver több build ügynököt (build slaves) kezelhet.
Egy tipikus build szerver több összetevőből áll, amelyek mindegyike a folyamat egy adott szakaszáért felelős. Az architektúra megértése segít helyesen méretezni az infrastruktúrát a csapat terhelése alatt.
Mag (executor) — futtatja a fordítási feladatokat. Működhet Docker konténerekként, virtuális gépként vagy közvetlenül a gazdagépen. Feladatsor kezeli a párhuzamos fordítások prioritásait. Artefaktum tároló megőrzi az eredményeket (APK, IPA, AAB) a későbbi közzétételhez.
A munka felgyorsítása érdekében a build szerver kezelhet egy ügynökösszességet. Minden ügynök — egy különálló gép vagy konténer, amely képes fordítást végezni. A terhelés növekedésével az automatikus méretezés (auto-scaling) új ügynököket ad a felhőben. Például a Jenkins a Kubernetes bővítménnyel dinamikusan hozhat létre pod-okat minden egyes fordításhoz.
pipeline {
agent {
kubernetes {
yaml """
apiVersion: v1
kind: Pod
spec:
containers:
- name: android-sdk
image: openjdk:17-jdk
command: ['sleep','infinity']
"""
}
}
stages {
stage('Build') {
steps {
sh './gradlew assembleDebug'
}
}
}
}
A build szerverek több kategóriába sorolhatók az elhelyezés módja és a cél technológiai verem alapján. A konkrét megoldás kiválasztása a csapat méretétől, a költségvetéstől és a biztonsági követelményektől függ.
Jenkins, TeamCity, Bamboo, GitLab Runner (self-hosted) — saját szerverekre vagy VPS-re telepíthetők. Előnyök: teljes ellenőrzés a konfiguráció felett, bármilyen szoftver használatának lehetősége, az adatok nem hagyják el a cég infrastruktúráját. Hátrányok: adminisztrációs, frissítési és méretezési költségek.
GitHub Actions, CircleCI, Bitrise, Codemagic, GitLab SaaS — nem igényelnek szerverkezelést. A fizetés fordítási percenként vagy előfizetéssel történik. Kis csapatok számára ez optimális kezdet. Nagy projektek esetén magas fordítási mennyiséggel a költségek meghaladhatják a self-hosted megoldás árát.
| Megoldás | Típus | Platformok | Kezdő ár |
|---|---|---|---|
| Jenkins | Self-hosted | Bármilyen | Ingyenes (open-source) |
| GitHub Actions | Felhő | Linux, macOS, Windows | 2000 perc/hónap ingyen |
| Bitrise | Felhő | iOS, Android, Flutter, React Native | $0 (90 perc/hónap) |
| TeamCity | Self-hosted | Bármilyen | Ingyenes (100 fordítás) |
Az iOS sajátossága, hogy a fordítás csak macOS-en lehetséges. Lehetőségek: Mac mini állványban, MacStadium (Mac bérlés), GitHub Actions macOS runner-rel, Bitrise saját Mac ügynökökkel. A self-hosted Mac build szerver drága berendezés vásárlását és karbantartását igényli.
Nézzük meg lépésről lépésre egy build szerver beállítását egy mobil projekthez Android és iOS fordításokkal. Alapként a GitHub Actions-t használjuk self-hosted runner-rel iOS-hez és felhő runner-rel Androidhoz.
Válasszon kezelőplatformot (Jenkins, GitLab, GitHub Actions). Telepítse a master csomópontot, konfigurálja a hozzáférést a repository-hoz SSH-n vagy personal access tokenen keresztül. Állítson be webhookot a fordítás automatikus elindításához push értesítések esetén.
Regisztráljon egy vagy több gépet ügynökként (slaves/runners). Android fordításokhoz az ügynök működhet Linuxon vagy Windows-on telepített JDK-val, Android SDK-val, Gradle-lel. iOS-hez — macOS-en Xcode Command Line Tools-szal és CocoaPods-szal.
Határozza meg a szakaszokat: checkout, függőségek telepítése, fordítás, tesztelés, artefaktum közzététele. A gyorsításhoz használja a függőségek gyorsítótárát (Gradle cache, CocoaPods cache, Docker image layers).
name: Android Build
on:
push:
branches: [main, develop]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
- name: Cache Gradle
uses: actions/cache@v4
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}
- name: Build Release APK
run: ./gradlew assembleRelease
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: app-release.apk
path: app/build/outputs/apk/release/app-release.apk
A self-hosted és a felhő build szerver közötti választás nemcsak technikai, hanem pénzügyi döntés is. A költség nagymértékben változik a fordítások mennyiségétől, a szükséges végrehajtási időtől és a macOS iOS-hez való szükségességétől függően.
A self-hosted szerver tőkekiadásokat (CAPEX) igényel: berendezések vásárlása (Mac mini $699-tól, szerverállványok, hálózati eszközök), beállítás és karbantartás. Felhőmegoldások — működési költségek (OPEX): fizetés fordítási percenként. Kis csapatok számára az OPEX kedvezőbb, nagy projektek esetén napi több száz fordítással a CAPEX 6–12 hónap alatt megtérül.
| Paraméter | Self-hosted (Jenkins) | Felhő (GitHub Actions) | Speciális (Bitrise) |
|---|---|---|---|
| Kezdeti költségek | $1000–$5000 | $0 | $0 |
| Havi díj | $50–$200 (tárhely) | $0–$500 (perc korlát) | $0–$300 (előfizetés) |
| macOS támogatás | Mac mini + CI beállítás szükséges | Beépített (macOS runner) | Beépített |
| Adminisztráció | 5–10 óra/hónap | 1–2 óra/hónap | 1–2 óra/hónap |
A költségvetés kiszámításakor vegye figyelembe a rejtett költségeket: a szoftverfrissítések ideje, hibaelhárítás, konfigurációk biztonsági mentése, artefaktumok hálózati tárolása. Self-hosted megoldások esetén adjon hozzá 20–30%-ot az alap karbantartási költséghez. Felhő esetén — győződjön meg róla, hogy a perc korlát fedezi a csúcsigénybevételeket, különösen kiadások előtt.
A build szerver költségei több módon csökkenthetők: spot példányok használata a felhőben (akár 70%-kal olcsóbb), függőségek gyorsítótárazása a fordítások között, sikertelen csővezetékek végrehajtási idejének korlátozása, és az inaktív self-hosted ügynökök automatikus kikapcsolásának beállítása munkaidőn kívül.
A build szerver hatékony működése számos elv betartását igényli. A fordítási sebesség optimalizálása és az infrastruktúra stabilitása közvetlenül befolyásolja a fejlesztőcsapat termelékenységét.
Gradle Build Cache, CCache C/C++-hez, incremental compiler Kotlin és Swift számára — kapcsolja be az összes elérhető gyorsítótárazási mechanizmust. Állítson be távoli fordítási gyorsítótárat (HTTP-n vagy S3-on keresztül), hogy a különböző fejlesztők és ügynökök megoszthassák a fordítási eredményeket.
Minden fordítást tiszta környezetben kell futtatni. Használjon Docker konténereket vagy ideiglenes virtuális gépeket a korábbi fordítások aktuálisra gyakorolt hatásának kizárására. Ez kiküszöböli a „szennyezett állapot” (state pollution) problémáját.
A build szerver hozzáfér a forráskódokhoz, aláírókulcsokhoz és titkokhoz. Minimalizálja a támadási felületet: használjon elkülönített ügynököket különböző projektekhez, korlátozza a hozzáférést a master csomóponthoz, használjon signed commiteket és ellenőrizze a függőségeket sérülékenységekre.
Gyakran Ismételt Kérdések
Kis csapatok számára a felhőmegoldások optimálisak: GitHub Actions (ingyenes 2000 perc/hónapig) vagy Bitrise mobil projektekhez. Nem igényelnek adminisztrációt és gyorsan beállíthatók.
Igen, de két típusú ügynökre lesz szükség: macOS-en iOS-hez és Linux/Windows-on Androidhoz. A CI szerver (Jenkins, GitLab) mindkét típusú ügynököt kezelheti egyetlen felületről.
Android fordításhoz — minimum 8 GB RAM, ajánlott 16 GB. iOS-hez — 8 GB-tól. Ha a csővezeték több párhuzamos fordítást futtat, a memória lineárisan méreteződik: N fordítás x 8 GB.
A self-hosted teljes ellenőrzést ad a konfiguráció felett, nincs perc korlátja (nagy mennyiségnél megtérül) és adat elkülönítést biztosít. A felhőmegoldások kis és közepes csapatok számára kedvezőbbek.
Igen, a Flutter projektek is fordítást igényelnek különböző platformokra. A Codemagic — egy speciális CI/CD Flutter számára, amely egyszerre támogatja az Android, iOS, Web és Desktop fordításokat egyetlen repository-ból.
Összefoglaló
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is