Jenkins — nedir, sistem mimarisi ve CI/CD sunucusu kurulumu

Yazar: IT Sectr Yayınlanma: 2026-04-13 Okuma süresi: 10 dk

Jenkins, mobil uygulamaların derlenmesini, test edilmesini ve teslimatını otomatikleştiren açık kaynaklı bir CI/CD sunucusudur. Bulut çözümlerinin aksine Jenkins kendi altyapınızda dağıtılır ve web arayüzü veya kod üzerinden yapılandırılır. CloudBees, 2025’e göre 1,6 milyondan fazla ekip CI/CD süreçleri için Jenkins kullanıyor. Sistem, Master-Agent mimarisi aracılığıyla dağıtık derlemeleri ve geliştirme araçlarıyla entegrasyon için 1800’den fazla eklentiyi destekler.

Anahtar Noktalar

  • Jenkins — Uygulama derleme ve teslimatını otomatikleştirmek için Java tabanlı açık kaynak CI/CD sunucusu
  • Pipeline — Bildirimsel veya betik sözdizimi ile Jenkinsfile’da CI/CD sürecinin kod olarak tanımlanması
  • Master-Agent — Paralel derlemeler için ana düğüm ve ajanlar arasında görev dağılımına sahip mimari
  • Eklentiler — Git, Docker, Fastlane, XCTest ve Gradle ile entegrasyon için 1800’den fazla modül
  • Jenkinsfile — Depodaki derleme, test ve dağıtım adımlarını tanımlayan yapılandırma dosyası

Jenkins Nedir ve Mobil Geliştirmede Neden Gereklidir

Jenkins, yazılım derleme, test etme ve teslimatı otomatikleştirmek için Java ile yazılmış açık kaynaklı bir CI/CD sunucusudur. Mobil geliştirme bağlamında Jenkins, ekiplerin iOS ve Android uygulamalarını otomatik olarak derlemesine, birim ve UI testleri çalıştırmasına, derlemeleri imzalamasına ve manuel işlemler olmadan App Store veya Google Play’e teslim etmesine olanak tanır.

Jenkins’e duyulan ihtiyaç, bir proje yerel derlemeleri aşıp birden fazla geliştiriciden düzenli kod entegrasyonu gerektirdiğinde ortaya çıkar. Her commit’i manuel olarak derlemek zaman alır ve hataya açıktır — Jenkins, depodaki her değişiklikte otomatik pipeline’lar başlatarak bu sorunu çözer.

JetBrains Developer Ecosystem 2025 raporuna göre mobil ekiplerin %54’ü birincil CI/CD platformları olarak Jenkins’i kullanıyor. Sistem, eklenti mimarisi sayesinde herhangi bir dili ve platformu destekler — Android için Gradle ve SDK Manager, iOS için Xcode Integration ve Keychain Manager mevcuttur.

Derleme altyapısı üzerinde tam kontrole, CI/CD sürecinin her adımını özelleştirmeye ve kurumsal güvenlik sistemleriyle entegrasyona ihtiyaç duyduğunuz projelerde Jenkins’i kullanın.

Jenkins Mimarisi: Master, Ajanlar ve Pipeline Çalışması

Jenkins mimarisi Master-Agent modeline dayanır. Master sunucu yapılandırma, görev zamanlama ve web arayüzünü yönetirken, ajanlar özel veya geçici makinelerde gerçek derlemeleri gerçekleştirir. Bu mimari, tek bir Master sunucudan macOS ajanında iOS ve Linux ajanında Android uygulamalarını paralel olarak derlemeye olanak tanır.

Jenkins’te Master ve Ajan

Jenkins Master düğümü tüm ayarları, eklentileri ve derleme geçmişini ana dizin $JENKINS_HOME’da saklar. Ajanlar SSH, JNLP veya WebSocket üzerinden Master’a bağlanır ve kuyruktan görev alır. Mobil geliştirme için, iOS derlemeleri için ayrı macOS ajanları ve Android derlemeleri için SDK ve araçlar yüklü Linux ajanları ayrılması önerilir.

Her ajan kalıcı bir sunucu veya dinamik bir Docker konteynerı olabilir. CloudBees dokümantasyonuna göre, derlemeleri 5 ajana dağıtmak, 10 paralel görevle toplam CI/CD pipeline süresini %70 oranında azaltır.

Kod Olarak Pipeline

Jenkins Pipeline, tüm CI/CD sürecinin projeyle birlikte depoda saklanan kod olarak tanımlanmasıdır. Pipeline bir Jenkinsfile içinde tanımlanır ve iki sözdizimini destekler: Bildirimsel (yapılandırılmış, önceden tanımlanmış bloklarla) ve Betik (esnek, yürütme akışı üzerinde tam kontrole sahip Groovy tabanlı).

Çoğu mobil proje için bildirimsel sözdizimi önerilir çünkü okunabilirlik ve öngörülebilirlik sağlar. Betik Pipeline, dinamik paralel aşamalar, özel hata yönetimi ve ortam değişkenlerine dayalı koşullu mantık gerektiren karmaşık senaryolar için uygundur.

Jenkins Pipeline: Bildirimsel ve Betik Sözdizimi

Jenkins Pipeline, CI/CD süreci adımlarının nasıl tanımlandığını belirleyen iki sözdizimini destekler. Bildirimsel sözdizimi, pipeline, stages, stage ve steps anahtar kelimeleriyle blok yapısı kullanır ve yeni kullanıcılar için sezgiseldir. Betik sözdizimi Groovy tabanlıdır ve koşul ifadeleri ve döngüler aracılığıyla yürütme üzerinde tam kontrol sağlar.

Bildirimsel Pipeline otomatik olarak bir Sandbox oluşturur — Groovy betiklerini çalıştırmak için güvenli bir ortam. Bu, Java ve Groovy’nin tehlikeli yöntemlerine erişimi kısıtlar ve pipeline güvenliğinin bir yönetici tarafından kontrol edildiği kurumsal ortamlar için kritiktir.

Bildirimsel Pipeline Yapısı

Bildirimsel Pipeline dört ana blok üzerine kuruludur: pipeline (kök blok), agent (ajan belirtimi), stages (aşama sırası) ve post (tamamlama sonrası eylemler). Her aşama, derleme komutları içeren adımlar içerir ve post bloğu başarı, başarısızlık veya kararsız derleme durumunda eylemleri tanımlar.

Post bloğu özellikle mobil projeler için kullanışlıdır — derleme başarısızlığında Slack bildirimleri yapılandırabilir veya başarılı tamamlamadan sonra IPA ve APK yapıtlarını arşivleyebilirsiniz. Pipeline manuel olarak durdurulsa bile Jenkins post eylemlerini garanti eder.

groovy
// iOS Uygulaması için Bildirimsel Pipeline
pipeline {
    agent { label 'macos' }
    stages {
        stage('Build') {
            steps {
                sh 'xcodebuild -workspace App.xcworkspace -scheme App clean build'
            }
        }
        stage('Test') {
            steps {
                sh 'xcodebuild -workspace App.xcworkspace -scheme App test'
            }
        }
    }
}

Betik Pipeline, agent yerine bir node bloğu sağlar ve dinamik dallanma için Groovy yapılarını kullanmaya olanak tanır. Bu sözdizimi, aşama kümesinin derleme parametrelerine veya önceki adımların sonuçlarına bağlı olduğu pipeline’lar için uygundur.

groovy
// Paralel Aşamalı Betik Pipeline
node('macos') {
    stage('Parallel Builds') {
        parallel(
            ios: { buildIOS() },
            android: { buildAndroid() }
        )
    }
}
def buildIOS() {
    sh 'fastlane ios build'
}

Jenkinsfile: iOS Projeleri için CI/CD Kurulumu

iOS projeleri için Jenkinsfile, Xcode, CocoaPods veya Swift Package Manager ve Fastlane yüklü bir macOS ajanı gerektirir. Tipik bir pipeline şu aşamaları içerir: bağımlılıkları yükleme, derleme, testleri çalıştırma, kod imzalama ve TestFlight veya App Store’a teslimat.

Jenkins’te iOS derlemelerinin önemli bir özelliği sertifikaların ve sağlama profillerinin yönetimidir. Bir depodan sertifikaları otomatik olarak almak için Fastlane Match veya anahtarları güvenli bir şekilde saklamak için Jenkins Credentials Binding eklentisinin kullanılması önerilir.

groovy
pipeline {
    agent { label 'macos' }
    environment {
        MATCH_PASSWORD = credentials('match-password')
    }
    stages {
        stage('Install Dependencies') {
            steps {
                sh 'pod install --repo-update'
            }
        }
        stage('Build and Test') {
            steps {
                sh 'fastlane scan'
                sh 'fastlane gym'
            }
        }
        stage('Deploy to TestFlight') {
            when { branch 'main' }
            steps {
                sh 'fastlane upload_testflight'
            }
        }
    }
}

iOS Birim Testleri için simülatör belirtimiyle xcodebuild test kullanın. Jenkins, JUnit eklentisi aracılığıyla XCTest raporlarının yayınlanmasını destekler — derleme panosuna test sonuçlarını gömmek için .xcresult’ı XML formatına dönüştürün.

Jenkinsfile: Android Projeleri için CI/CD Kurulumu

Jenkins’te Android derlemeleri, Java JDK, Android SDK, Gradle ve emülatörler yüklü Linux ajanlarında gerçekleştirilir. Pipeline şu aşamaları içerir: lint denetimi, birim testleri, APK veya AAB derlemesi, emülatörde enstrümante testler ve Google Play Console’da yayınlama.

Android SDK’yı yönetmek için Jenkinsfile’da sdkmanager kullanarak gerekli platformları ve derleme araçlarını yükleyin. Sonraki çalıştırmaları hızlandırmak için derlemeler arasında .gradle ve .android dizinlerini önbelleğe almanız önerilir.

groovy
pipeline {
    agent { label 'linux' }
    stages {
        stage('Lint Check') {
            steps {
                sh './gradlew lint'
            }
        }
        stage('Unit Tests') {
            steps {
                sh './gradlew testDebugUnitTest'
            }
        }
        stage('Build APK') {
            steps {
                sh './gradlew assembleDebug'
            }
            post {
                success {
                    archiveArtifacts artifacts: '**/build/outputs/apk/**/*.apk'
                }
            }
        }
    }
}

Android’de enstrümante testler, çalışan bir emülatör gerektirir. Jenkins, testlerden önce otomatik olarak bir emülatör oluşturan ve başlatan Android Emulator eklentisini destekler. Fiziksel cihazlar için Firebase Test Lab’i kullanın — entegrasyon Google Cloud SDK eklentisi aracılığıyla kullanılabilir.

Derleme Otomasyonu için Jenkins Eklentileri

Jenkins eklenti sistemi platformun önemli bir avantajıdır. 1800’den fazla eklenti, CI/CD’nin tüm aşamalarını kapsar: sürüm kontrol sistemleriyle entegrasyondan bulut hizmetlerine dağıtıma kadar. Her eklenti pipeline’a yeni adımlar ekler ve web arayüzünü ek yapılandırma sayfalarıyla genişletir.

Mobil geliştirme için bir dizi kimlik bilgisi yönetim eklentisi gereklidir: App Store Connect tokenlarını ve Google Play hizmet hesaplarını saklamak için Credentials Binding. Xcode Integration eklentisi, Jenkins arayüzünden iOS uygulama derleme adımları ekler.

EklentiAmaçPlatform
Git IntegrationDepo kopyalama, dal ve Pull Request yönetimiiOS, Android
Gradle PluginRapor yayınlama ile Android derlemeleri için Gradle görevlerini çalıştırmaAndroid
Xcode IntegrationJenkinsfile olmadan iOS projeleri derlemeiOS
Docker PipelineIzole ortamda Docker konteynerlarında derleme çalıştırmaiOS, Android
Slack NotificationSlack kanallarında derleme durumu bildirimleriiOS, Android

Docker Pipeline eklentisi, her derleme aşamasını ayrı bir konteynerde çalıştırmaya olanak tanır, ortam tekrarlanabilirliğini sağlar ve ortam farklılıkları sorununu ortadan kaldırır. Android derlemeleri için Gradle topluluğundan önceden yüklenmiş Android SDK görüntülerini kullanın.

Jenkins vs Travis CI: Mobil Ekipler için Karşılaştırma

Jenkins ve Travis CI arasındaki seçim, ekip büyüklüğüne, bütçeye ve altyapı gereksinimlerine bağlıdır. Jenkins, tam kontrole sahip, özel bir sunucu ve yönetici gerektiren kendi kendine barındırılan bir çözümdür. Travis CI, kullanım başına ödemeli, sunucu yönetimi gerektirmeyen bir bulut hizmetidir.

Startup’lar ve küçük ekipler için Travis CI tercih edilir — sıfır altyapı maliyeti, basit GitHub entegrasyonu ve iOS ve Android için hazır derlemeler. Kurumsal projeler için Jenkins avantajlar sunar: kendi macOS çalıştırıcıları, kurumsal güvenlik politikalarına uygunluk ve Jenkinsfile aracılığıyla ince ayarlı pipeline yapılandırması.

Stack Overflow Survey 2025’e göre Jenkins profesyonel geliştiricilerin %42’si tarafından kullanılırken, Travis CI %12 tarafından kullanılmaktadır. Ancak Travis CI, açık kaynak topluluğunda halka açık depolar için ücretsiz planı ve minimum giriş engeli sayesinde hâlâ popülerdir.

CI/CD Süreçlerinde Jenkins’in Avantajları

Jenkins, onu mobil geliştirme için CI/CD standardı haline getiren bir dizi avantaj sunar. Ücretsiz MIT lisansı, sunucunun ticari projelerde kısıtlama olmaksızın kullanılmasına olanak tanır ve açık kaynak kod, satıcı bağımsızlığı ve güvenlik denetimi yeteneği sağlar.

Master-Agent mimarisi yatay ölçeklendirme sağlar — yeni bir ajan eklemek pipeline verimini doğrusal olarak artırır. Jenkins, Jenkins X aracılığıyla Kubernetes’te dinamik ajanları destekleyerek gerektiğinde derleyicileri otomatik olarak oluşturup yok etmeye olanak tanır.

Eklenti ekosistemi tüm modern araçları kapsar: Docker, Kubernetes, Fastlane, SonarQube, GitLab, Bitbucket. Hazır bir eklenti mevcut değilse, Java’da kendi uzantınızı yazabilir veya projeler arasında kodu yeniden kullanmak için Pipeline Shared Libraries’i kullanabilirsiniz.

Sıkça Sorulan Sorular

Mobil geliştirmede Jenkins nedir?

Jenkins, iOS ve Android uygulamalarının derleme, test ve teslimatını otomatikleştiren açık kaynaklı bir CI/CD sunucusudur. Java üzerinde çalışır, Master-Agent mimarisi aracılığıyla dağıtık derlemeleri destekler ve web arayüzü veya proje deposundaki Jenkinsfile ile yapılandırılır.

Jenkins diğer CI/CD sistemlerinden nasıl farklıdır?

Jenkins, kendi kendini yöneten altyapısı ve eklenti sistemiyle farklılık gösterir. Travis CI veya GitHub Actions’ın aksine Jenkins kendi sunucunuza kurulum gerektirir, ancak kurumsal projeler için derleme ortamı, güvenlik ve erişim politikaları üzerinde tam kontrol sağlar.

Jenkins Pipeline nedir ve nasıl çalışır?

Jenkins Pipeline, bir Jenkinsfile’da saklanan Groovy kodu olarak CI/CD sürecinin tanımıdır. Pipeline, derleme, test ve dağıtımı tanımlayan aşamalar (stages) ve adımlardan (steps) oluşur. Basit senaryolar için Bildirimsel, karmaşık için Betik sözdizimini destekler.

Mobil geliştirme için hangi Jenkins eklentileri gereklidir?

iOS için Xcode Integration ve Keychain Manager gereklidir. Android için Gradle Plugin ve Android Emulator gereklidir. Her iki platform için: Git Integration, Credentials Binding, Docker Pipeline ve derleme durumu bildirimleri için Slack Notification.

iOS ve Android derlemeleri için Jenkins nasıl kurulur?

Bir sunucuya Jenkins kurun, iOS için bir macOS ajanı ve SDK’lar yüklü Android için bir Linux ajanı ekleyin. Derleme aşamalarını tanımlayan bir Jenkinsfile’ı depo kökünde oluşturun. iOS için kod imzalamada Fastlane kullanın; Android için bağımlılık önbellekleme ile Gradle görevlerini kullanın.

Özet

  • Jenkins — Mobil uygulamaların derleme, test ve teslimatını otomatikleştiren Java tabanlı açık kaynak CI/CD sunucusu
  • Master-Agent mimarisi iOS için macOS ve Android için Linux üzerinde dağıtık derlemelere olanak tanır
  • Jenkins Pipeline, Bildirimsel veya Betik Groovy sözdizimi ile Jenkinsfile’da CI/CD sürecini kod olarak tanımlar
  • Eklentiler işlevselliği genişletir — Git, Docker, Fastlane ve diğer araçlar için 1800’den fazla modül
  • iOS için Jenkinsfile pod yükleme, Xcode derleme, testler ve Fastlane aracılığıyla TestFlight teslimatını içerir
  • Android için Jenkinsfile lint, birim testleri, APK derlemesi ve emülatör testlerini içerir
  • Startup’lar için bulut Travis CI önerilir; Kurumsal projeler için tam altyapı kontrollü Jenkins

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.

Projeyi tartış

Ayrıca okuyun