Build Server — bu məxusi server və ya virtual maşındır ki, avtomatik olaraq mənbə kodu kompilyasiya edir, testləri işə salır və yerləşdirməyə hazır artefaktlar yaradır. O, CI/CD infrastrukturunun mərkəzi qovşanağı kimi xidmət edir və kompilyasiya tapşırıqlarını öz üzərinə götürərək yerli tərtibatçı maşınlarını boşaldır. GitLab Global DevSecOps Report, 2025 hesabatına görə, 67% komanda dayanıqlılığı və kompilyasiya sürətini artırmaq üçün ayrılmış build serverlərdən istifadə edir.
Başlıca
Build Server (kompilyasiya serveri) — bu kodun kompilyasiyası və buraxılışların hazırlanması ilə bağlı tapşırıqların avtomatik icrası üçün nəzərdə tutulmuş ixtisaslaşdırılmış hesablama sistemidir. Tərtibatçının yerli maşınında kompilyasiyadan fərqli olaraq, server repozitorinin surəti ilə işləyir, təmiz mühit və sabit asılılıq versiyalarından istifadə edir.
Build server Continuous Integration təcrübəsinin əsas komponentidir. O, hər bir commit-in kim tərəfindən edilməsindən asılı olmayaraq eyni yoxlama prosesindən keçməsini təmin edir. Bu, “mənim maşınımda işləyir” problemini aradan qaldırır və vahid keyfiyyət standartını təmin edir.
Google DORA, 2025 məlumatlarına görə, ayrılmış build server istifadə edən komandalar dəyişiklik təsdiq müddətini saatlardan dəqiqələrə qədər azaldır. Bu, son istifadəçilərə funksiyaların və düzəlişlərin çatdırılma sürətinə birbaşa təsir edir.
Mobil tətbiqlərin kompilyasiyası əhəmiyyətli resurs tələb edir: Kotlin və ya Swift kompilyasiyası 5 dəqiqədən 40 dəqiqəyə qədər çəkə bilər. Kompilyasiyanı tərtibatçının yerli maşınında işə salsa, o, tamamlanana qədər məhsuldar işləyə bilməz. Build server bu problemi həll edərək tərtibatçını digər tapşırıqlar üçün azad edir.
Təcrübədə terminlər çox vaxt sinonim kimi istifadə olunur, lakin fərq var: CI server (Jenkins, CircleCI) — bu boru kəmərlərini idarə edən sistemdir, build server isə bu boru kəmərlərinin icra olunduğu fiziki və ya virtual hostdur. Bir CI server çoxlu build agentlərini (build slaves) idarə edə bilər.
Tipik build server bir neçə komponentdən ibarətdir, hər biri prosesin müəyyən mərhələsinə cavabdehdir. Arxitekturanı başa düşmək infrastrukturu komandanın yükü altında düzgün miqyaslamağa kömək edir.
Nüvə (executor) — kompilyasiya tapşırıqlarını işə salır. Docker konteynerləri, virtual maşınlar və ya birbaşa host üzərində işləyə bilər. Tapşırıq növbəsi paralel kompilyasiyaların prioritetlərini idarə edir. Artefakt anbarı sonrakı dərc üçün nəticələri (APK, IPA, AAB) saxlayır.
İşi sürətləndirmək üçün build server agentlər hovuzunu idarə edə bilər. Hər bir agent — kompilyasiya yerinə yetirə bilən ayrıca maşın və ya konteynerdir. Yük artdıqca avtomatik miqyaslama (auto-scaling) buludda yeni agentlər əlavə edir. Məsələn, Jenkins Kubernetes plagini ilə hər kompilyasiya üçün dinamik olaraq podlar yarada bilər.
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'
}
}
}
}
Build serverlər yerləşdirilmə üsuluna və hədəf texnologiya stackinə görə bir neçə kateqoriyaya bölünür. Müəyyən həllin seçimi komandanın ölçüsündən, büdcədən və təhlükəsizlik tələblərindən asılıdır.
Jenkins, TeamCity, Bamboo, GitLab Runner (self-hosted) — öz serverlərdə və ya VPS-də qurulur. Müsbət cəhətləri: konfiqurasiya üzərində tam nəzarət, istənilən proqram təminatından istifadə imkanı, məlumatlar şirkətin infrastrukturunu tərk etmir. Mənfi cəhətləri: inzibatçılıq, yeniləmə və miqyaslama xərcləri.
GitHub Actions, CircleCI, Bitrise, Codemagic, GitLab SaaS — server idarəçiliyi tələb etmir. Ödəniş kompilyasiya dəqiqələrinə və ya abunə üzrədir. Kiçik komandalar üçün bu optimal başlanğıcdır. Çoxlu kompilyasiyası olan böyük layihələr üçün xərclər self-hosted həllin qiymətindən yüksək ola bilər.
| Həll | Növ | Platformalar | Başlanğıc qiymət |
|---|---|---|---|
| Jenkins | Self-hosted | Istənilən | Pulsuz (open-source) |
| GitHub Actions | Bulud | Linux, macOS, Windows | 2000 dəq/ay pulsuz |
| Bitrise | Bulud | iOS, Android, Flutter, React Native | $0 (90 dəq/ay) |
| TeamCity | Self-hosted | Istənilən | Pulsuz (100 kompilyasiya) |
iOS-ın xüsusiyyəti ondan ibarətdir ki, kompilyasiya yalnız macOS-də mümkündür. Variantlar: stekdə Mac mini, MacStadium (Mac icarəsi), macOS runner ilə GitHub Actions, öz Mac agentləri ilə Bitrise. Self-hosted Mac build server bahalı avadanlığın alınması və onun saxlanmasını tələb edir.
Android və iOS kompilyasiyaları ilə mobil layihə üçün build server-in addım-addım qurulmasına baxaq. Əsas olaraq iOS üçün self-hosted runner və Android üçün bulud runner ilə GitHub Actions istifadə edirik.
İdarəetmə platforması seçin (Jenkins, GitLab, GitHub Actions). Master node quraşdırın, SSH və ya personal access token vasitəsilə repozitoriyaya girişə ayarlayın. Repozitoriyaya push bildirişləri zamanı avtomatik kompilyasiya başlatmaq üçün webhook konfiqurasiya edin.
Bir və ya bir neçə maşını agent (slaves/runners) kimi qeydiyyatdan keçirin. Android kompilyasiyaları üçün agent quraşdırılmış JDK, Android SDK, Gradle ilə Linux və ya Windows-da işləyə bilər. iOS üçün — Xcode Command Line Tools və CocoaPods ilə macOS-da.
Mərhələləri müyyənləşdirin: checkout, asılılıqların quraşdırılması, kompilyasiya, test, artefaktın dərci. Sürətləndirmək üçün asılılıqların keşlənməsindən istifadə edin (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
Self-hosted və bulud build serveri arasında seçim yalnız texniki deyil, həm də maliyyə qərarıdır. Qiymət kompilyasiyaların həcmindən, tələb olunan icra vaxtından və iOS üçün macOS ehtiyacından asılı olaraq çox dəyişir.
Self-hosted server kapital xərcləri (CAPEX) tələb edir: avadanlığın alınması (Mac mini $699-dan, server stendləri, şəbəkə avadanlığı), quraşdırma və texniki xidmət. Bulud həlləri — əməliyyat xərcləri (OPEX): kompilyasiya dəqiqələrinə görə ödəniş. Kiçik komandalar üçün OPEX daha sərfəlidir, gündə yüzlərlə kompilyasiyası olan böyük layihələr üçün CAPEX 6–12 ay ərzində özünü doğruldur.
| Parametr | Self-hosted (Jenkins) | Bulud (GitHub Actions) | Ixtisaslaşdırılmış (Bitrise) |
|---|---|---|---|
| Başlanğıc xərclər | $1000–$5000 | $0 | $0 |
| Aylıq ödəniş | $50–$200 (hosting) | $0–$500 (dəqiqə limiti) | $0–$300 (abunə) |
| macOS dəstəyi | Mac mini + CI quraşdırma tələb edir | Daxili (macOS runner) | Daxili |
| İnzibatçılıq | 5–10 saat/ay | 1–2 saat/ay | 1–2 saat/ay |
Büdcə hesablayarkən gizli xərcləri nəzərə alın: proqram təminatını yeniləmə, nasazlıqları aradan qaldırma, konfiqurasiyaların ehtiyat nüsxəsi, şəbəkə artefakt saxlanması vaxtı. Self-hosted həllər üçün baza texniki xidmət dəyərinə 20–30% əlavə edin. Bulud həlləri üçün — dəqiqə limitinin pik yükləri, xüsusilə buraxılışlardan əvvəl örtdüyünə əmin olun.
Build server xərclərini bir neçə yolla azaltmaq olar: buludda spot instanslardan istifadə (70% ədəcuz), kompilyasiyalar arasında asılılıqları keşləmək, uğursuz boru kəmərlərinin icra müddətini məhdudlaşdırmaq və iş vaxtından kənarda qeyri-aktiv self-hosted agentlərin avtomatik söndürülməsini konfiqurasiya etmək.
Build server-in səmərəli işləməsi bir sıra prinsiplərə riayət etməyi tələb edir. Kompilyasiya sürətinin optimallaşdırılması və infrastrukturun dayanıqlılığı birbaşa komandanın məhsuldarlığına təsir edir.
Gradle Build Cache, C/C++ üçün CCache, Kotlin və Swift üçün incremental compiler — bütün mövcud keşləmə mexanizmlərini aktivləşdirin. Müxtəlif tərtibatçıların və agentlərin kompilyasiya nəticələrini paylaşması üçün uzaqdan kompilyasiya keşi (HTTP və ya S3 vasitəsilə) konfiqurasiya edin.
Hər bir kompilyasiya təmiz mühitdə işə salınmalıdır. Əvvəlki kompilyasiyaların cariyə təsirini istisna etmək üçün Docker konteynerlərindən və ya müvəqqqəti virtual maşınlardan istifadə edin. Bu, “çirkli vəziyyət” (state pollution) problemini aradan qaldırır.
Build server mənbə kodlara, imza açarlarına və sirlərə çıxışa malikdir. Hücum səthini minimuma endirin: müxtəlif layihələr üçün izolyasiya olunmuş agentlərdən istifadə edin, master node girişini məhdudlaşdırın, signed commits istifadə edin və asılılıqları zəifliklər üçün yoxlayın.
Tez-tez verilən suallar
Kiçik komandalar üçün bulud həlləri optimaldır: GitHub Actions (2000 dəq/ay pulsuz) və ya mobil layihələr üçün Bitrise. Onlar inzibatçılıq tələb etmir və tez konfiqurasiya olunur.
Bəli, lakin iki növ agent tələb olunacaq: iOS üçün macOS və Android üçün Linux/Windows. CI server (Jenkins, GitLab) vahid interfeysdən hər iki növ agenti idarə edə bilər.
Android kompilyasiyası üçün minimum 8 GB RAM, tövsiyə olunan 16 GB. iOS üçün — 8 GB-dan. Boru kəməri bir neçə paralel kompilyasiya işə salırsa, yaddaş xətti miqyaslanır: N kompilyasiya x 8 GB.
Self-hosted konfiqurasiya üzərində tam nəzarət verir, kompilyasiya dəqiqə limiti yoxdur (böyük həcmlərdə özünü doğruldur) və məlumat izolyasiyasını təmin edir. Bulud həlləri kiçik və orta komandalar üçün daha sərfəlidir.
Bəli, Flutter layihələri də müxtəlif platformalar üçün kompilyasiya tələb edir. Codemagic — Flutter üçün ixtisaslaşdırılmış CI/CD həllidir ki, eyni repozitoridan Android, iOS, Web və Desktop kompilyasiyalarını eyni vaxtda dəstəkləyir.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun