Build Server, kaynak kodu otomatik olarak derleyen, testleri çalıştıran ve dağıtıma hazır yapay ürünler (artifact) oluşturan özel bir sunucu veya sanal makinedir. CI/CD altyapısının merkezi düğümü olarak görev yapar ve derleme görevlerini üstlenerek geliştiricilerin yerel makinelerini boşa çıkarır. GitLab Global DevSecOps Report, 2025’e göre, ekiplerin %67’si kararlılığı ve derleme hızını artırmak için özel derleme sunucuları kullanmaktadır.
Temel Noktalar
Build Server (derleme sunucusu), kod derleme ve sürüm hazırlığı ile ilgili görevleri otomatik olarak yürütmek üzere tasarlanmış özel bir bilgi işlem sistemidir. Geliştiricinin makinesindeki yerel derlemenin aksine, sunucu deponun bir kopyasıyla çalışır, temiz bir ortam ve sabit bağımlılık sürümleri kullanır.
Derleme sunucusu, Sürekli Entegrasyon (Continuous Integration) pratiğinin anahtar bir bileşenidir. Her commit’in, kim tarafından yapıldığına bakılmaksızın aynı doğrulama sürecinden geçmesini sağlar. Bu, “benim makinemde çalışıyor” sorununu ortadan kaldırır ve tek tip bir kalite standardı sağlar.
Google DORA, 2025’e göre, özel derleme sunucusu kullanan ekipler, değişiklik onay süresini saatlerden dakikalara indirmektedir. Bu, son kullanıcılara özellik ve düzeltmelerin teslim hızını doğrudan etkiler.
Mobil uygulamaları derlemek önemli kaynaklar gerektirir: Kotlin veya Swift derlemesi 5 ila 40 dakika sürebilir. Derlemeyi geliştiricinin yerel makinesinde çalıştırırsanız, tamamlanana kadar verimli bir şekilde çalışamaz. Derleme sunucusu, geliştiriciyi diğer görevler için serbest bırakarak bu sorunu çözer.
Pratikte, terimler genellikle eşanlamlı olarak kullanılır, ancak bir nüans vardır: bir CI sunucusu (Jenkins, CircleCI) boru hatlarını yöneten bir sistemdir, derleme sunucusu ise bu boru hatlarının yürütüldüğü fiziksel veya sanal ana bilgisayardır. Bir CI sunucusu birden fazla derleme aracısını (build slaves) yönetebilir.
Tipik bir derleme sunucusu, her biri sürecin belirli bir aşamasından sorumlu olan birkaç bileşenden oluşur. Mimarisi anlamak, ekibin iş yüküne göre altyapıyı doğru şekilde ölçeklendirmeye yardımcı olur.
Yürütücü (çekirdek) — derleme görevlerini çalıştırır. Docker konteynerları, sanal makineler veya doğrudan ana bilgisayar üzerinde çalışabilir. İş kuyruğu paralel derlemelerin önceliklerini yönetir. Yapay ürün deposu sonuçları (APK, IPA, AAB) daha sonra yayınlamak üzere kaydeder.
Çalışmayı hızlandırmak için derleme sunucusu bir aracı havuzunu yönetebilir. Her aracı, derleme gerçekleştirebilen ayrı bir makine veya konteynerdir. Yük arttığında, otomatik ölçeklendirme (auto-scaling) buluta yeni aracılar ekler. Örneğin, Kubernetes eklentisiyle Jenkins her derleme için dinamik olarak pod’lar oluşturabilir.
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'
}
}
}
}
Derleme sunucuları, dağıtım yöntemine ve hedef yığına göre birkaç kategoriye ayrılır. Belirli bir çözümün seçimi, ekip büyüklüğüne, bütçeye ve güvenlik gereksinimlerine bağlıdır.
Jenkins, TeamCity, Bamboo, GitLab Runner (self-hosted) — kendi sunucularınıza veya VPS’inize kurulur. Artıları: yapılandırma üzerinde tam kontrol, herhangi bir yazılımı kullanma imkanı, veriler şirket altyapısından asla çıkmaz. Eksileri: yönetim, güncelleme ve ölçeklendirme maliyetleri.
GitHub Actions, CircleCI, Bitrise, Codemagic, GitLab SaaS — sunucu yönetimi gerektirmez. Derleme dakikası veya abonelik başına ödeme yapılır. Küçük ekipler için bu en uygun başlangıçtır. Yüksek derleme hacmine sahip büyük projeler için maliyetler self-hosted çözümü aşabilir.
| Çözüm | Tür | Platformlar | Başlangıç Fiyatı |
|---|---|---|---|
| Jenkins | Self-hosted | Herhangi | Ücretsiz (açık kaynak) |
| GitHub Actions | Bulut | Linux, macOS, Windows | Ayda 2000 dakika ücretsiz |
| Bitrise | Bulut | iOS, Android, Flutter, React Native | $0 (ayda 90 dakika) |
| TeamCity | Self-hosted | Herhangi | Ücretsiz (100 derleme) |
iOS’un özelliği, derlemenin yalnızca macOS üzerinde mümkün olmasıdır. Seçenekler: rafta Mac mini, MacStadium (Mac kiralama), macOS runner ile GitHub Actions, kendi Mac aracılarıyla Bitrise. Kendi kendine barındırılan bir Mac derleme sunucusu, pahalı donanım satın alımı ve bakımını gerektirir.
Android ve iOS derlemeleri olan bir mobil proje için derleme sunucusunun adım adım kurulumunu inceleyelim. Temel olarak iOS için self-hosted runner ve Android için bulut runner ile GitHub Actions kullanacağız.
Bir yönetim platformu seçin (Jenkins, GitLab, GitHub Actions). Ana düğümü kurun, SSH veya kişisel erişim belirteci aracılığıyla depoya erişimi yapılandırın. Depoya push olaylarında derlemeyi otomatik olarak başlatmak için bir webhook ayarlayın.
Bir veya daha fazla makineyi aracı (slaves/runners) olarak kaydedin. Android derlemeleri için, JDK, Android SDK ve Gradle kurulu Linux veya Windows üzerinde bir aracı çalışabilir. iOS için — Xcode Command Line Tools ve CocoaPods ile macOS üzerinde.
Aşamaları tanımlayın: checkout, bağımlılıkları yükleme, derleme, test etme, yapay ürünü yayınlama. Hızlandırmak için bağımlılık önbelleğini (Gradle önbelleği, CocoaPods önbelleği, Docker görüntü katmanları) kullanın.
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 ve bulut derleme sunucusu arasındaki seçim yalnızca teknik değil, aynı zamanda finansal bir karardır. Maliyet, derleme hacmine, gerekli yürütme süresine ve iOS için macOS ihtiyacına bağlı olarak büyük ölçüde değişir.
Self-hosted bir sunucu sermaye harcaması (CAPEX) gerektirir: ekipman satın alma (Mac mini $699’dan başlayan, sunucu rafları, ağ ekipmanları), kurulum ve bakım. Bulut çözümleri işletme giderleridir (OPEX): derleme dakikası başına ödeme. Küçük ekipler için OPEX daha avantajlıdır; günde yüzlerce derlemesi olan büyük projeler için CAPEX 6–12 ayda kendini amorti eder.
| Parametre | Self-hosted (Jenkins) | Bulut (GitHub Actions) | Uzmanlaşmış (Bitrise) |
|---|---|---|---|
| Başlangıç maliyetleri | $1000–$5000 | $0 | $0 |
| Aylık ücret | $50–$200 (barındırma) | $0–$500 (dakika sınırı) | $0–$300 (abonelik) |
| macOS desteği | Mac mini + CI kurulumu gerekir | Dahili (macOS runner) | Dahili |
| Yönetim | Ayda 5–10 saat | Ayda 1–2 saat | Ayda 1–2 saat |
Bütçe yaparken gizli maliyetleri de hesaba katın: yazılım güncellemeleri, sorun giderme, yapılandırma yedeklemeleri, ağ yapay ürün deposu zamanı. Self-hosted çözümler için temel bakım maliyetine %20–30 ekleyin. Bulut çözümler için, özellikle sürümlerden önce dakika sınırının tepe yüklerini karşıladığından emin olun.
Derleme sunucusu maliyetlerini birkaç şekilde azaltabilirsiniz: bulutta spot örnekler kullanın (%70’e kadar daha ucuz), derlemeler arasında bağımlılıkları önbelleğe alın, başarısız boru hatlarının yürütme süresini sınırlayın ve çalışma saatleri dışında etkin olmayan self-hosted aracıların otomatik kapanmasını yapılandırın.
Etkili bir derleme sunucusu işletimi, bir dizi ilkeye uymayı gerektirir. Derleme hızı optimizasyonu ve altyapı kararlılığı, geliştirme ekibinin ürenliğini doğrudan etkiler.
Gradle Build Cache, C/C++ için CCache, Kotlin ve Swift için artımlı derleyici — mevcut tüm önbellek mekanizmalarını etkinleştirin. Farklı geliştiricilerin ve aracıların derleme sonuçlarını paylaşabilmesi için uzak bir derleme önbelleği (HTTP veya S3 aracılığıyla) kurun.
Her derleme temiz bir ortamda çalıştırılmalıdır. Önceki derlemelerin mevcut derlemeyi etkilemesini önlemek için Docker konteynerları veya geçici sanal makineler kullanın. Bu, durum kirliliği (state pollution) sorununu ortadan kaldırır.
Derleme sunucusu kaynak kodlarına, imzalama anahtarlarına ve sırlara erişebilir. Saldırı yüzeyini en aza indirin: farklı projeler için izole aracılar kullanın, ana düğüme erişimi kısıtlayın, imzalı commit’ler kullanın ve bağımlılıkları güvenlik açıklarına karşı tarayın.
Sıkça Sorulan Sorular
Küçük ekipler için bulut çözümleri en uygundur: GitHub Actions (ayda 2000 dakikaya kadar ücretsiz) veya mobil projeler için Bitrise. Yönetim gerektirmezler ve hızla kurulurlar.
Evet, ancak iki tür aracı gerekir: iOS için macOS üzerinde ve Android için Linux/Windows üzerinde. CI sunucusu (Jenkins, GitLab) tek bir arayüzden her iki aracı türünü de yönetebilir.
Android derlemeleri için — minimum 8 GB RAM, 16 GB önerilir. iOS için — 8 GB’dan başlayan. Boru hattı birden fazla paralel derleme çalıştırırsa, bellek doğrusal olarak ölçeklenir: N derleme x 8 GB.
Self-hosted sunucu, yapılandırma üzerinde tam kontrol sağlar, derleme dakika sınırı yoktur (yüksek hacimlerde kendini amorti eder) ve veri izolasyonunu garanti eder. Bulut çözümleri, küçük ve orta ölçekli ekipler için daha uygun maliyetlidir.
Evet, Flutter projeleri de farklı platformlar için derleme gerektirir. Codemagic, tek bir depodan Android, iOS, Web ve Desktop derlemelerini aynı anda destekleyen, Flutter için özel bir CI/CD’dir.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.
Ayrıca okuyun