Jenkins — mobil tətbiqlərin yığılmasını, sınaqdan keçirilməsini və çatdırılmasını avtomatlaşdıran açıq mənbəli CI/CD serveridir. Bulud həllərindən fərqli olaraq, Jenkins öz infrastrukturunuzda qurulur və veb interfeys və ya kod vasitəsilə konfiqurasiya edilir. CloudBees, 2025 məlumatlarına görə, 1.6 milyondan çox komanda Jenkinsi CI/CD prosesləri üçün istifadə edir. Sistem Master-Agent arxitekturası vasitəsilə paylanmış yığmaları və tərtibat alətləri ilə inteqrasiya üçün 1800-dən çox plaqini dəstəkləyir.
Əsas məqamlar
Jenkins — proqram təminatının yığılması, sınaqdan keçirilməsi və çatdırılmasını avtomatlaşdırmaq üçün Java dilində yazılmış açıq mənbəli CI/CD serveridir. Mobil inkişaf kontekstində Jenkins komandalara iOS və Android tətbiqlərini avtomatik yığmağa, vahid və UI testlərini icra etməyə, build-ləri imzalamağa və əl əməliyyatları olmadan App Store və ya Google Play-ə çatdırmağa imkan verir.
Jenkinsə ehtiyac o zaman yaranır ki, layihə yerli yığmaları aşır və bir neçə tərtibatçıdan müntəzəm kod inteqrasiyası tələb edir. Hər commit-in əl ilə yığılması vaxt aparır və səhvlərə yol açır — Jenkins bu problemi həll edərək depodakı hər dəyişiklikdə avtomatik pipeline-lar işə salır.
JetBrains Developer Ecosystem 2025 hesabatına görə, mobil komandaların 54%-i Jenkinsi əsas CI/CD platforması kimi istifadə edir. Sistem plaqin arxitekturası sayəsində istənilən dil və platformanı dəstəkləyir — Android üçün Gradle və SDK Manager, iOS üçün Xcode Integration və Keychain Manager mövcuddur.
Jenkinsi yığma infrastrukturu üzərində tam nəzarət, CI/CD prosesinin hər addımının fərdiləşdirilməsi və korporativ təhlükəsizlik sistemləri ilə inteqrasiya tələb olunan layihələrdə istifadə edin.
Jenkins arxitekturası Master-Agent modeli əsasında qurulmuşdur. Master server konfiqurasiyanı, tapşırıqların planlaşdırılmasını və veb interfeysi idarə edir, agentlər isə ayrılmış və ya müvəqqəti maşınlarda faktiki yığmaları həyata keçirir. Belə arxitektura bir Master serverdən macOS agentində iOS tətbiqini və Linux agentində Android tətbiqini paralel yığmağa imkan verir.
Jenkins Master node-u bütün parametrləri, plaqinləri və yığma tarixçəsini $JENKINS_HOME qovluğunda saxlayır. Agentlər Master-ə SSH, JNLP və ya WebSocket vasitəsilə qoşulur və növbədən tapşırıqlar alır. Mobil inkişaf üçün iOS yığmaları üçün ayrıca macOS agentlərinin və Android yığmaları üçün SDK və alətlər quraşdırılmış Linux agentlərinin ayrılması tövsiyə olunur.
Hər bir agent sabit server və ya dinamik Docker konteyneri ola bilər. CloudBees sənədlərinə görə, yığmaların 5 agent arasında paylanması 10 paralel tapşırıqda CI/CD pipeline-ının ümumi vaxtını 70% azaldır.
Jenkins Pipeline — bütün CI/CD prosesinin layihə ilə birlikdə depoda saxlanılan kod şəklində tərifidir. Pipeline Jenkinsfile-də təsvir edilir və iki sintaksisi dəstəkləyir: Declarative (strukturlaşdırılmış, əvvəlcədən təyin olunmuş bloklarla) və Scripted (çevik, icra axınına tam nəzarətlə Groovy əsasında).
Deklarativ sintaksis əksər mobil layihələr üçün tövsiyə olunur, çünki oxunaqlılıq və proqnozlaşdırıla bilənlik təmin edir. Scripted Pipeline dinamik paralel mərhələləri, fərdi səhv idarəetməsi və ətraf mühit dəyişənlərinə əsaslanan şərti məntiqi olan mürəkkəb ssenarilər üçün uyğundur.
Jenkins Pipeline CI/CD proses addımlarının təsvir üsulunu təyin edən iki sintaksisi dəstəkləyir. Declarative sintaksis pipeline, stages, stage və steps açar sözləri ilə blok strukturu istifadə edir, bu da onu yeni istifadəçilər üçün intuitiv edir. Scripted sintaksis Groovy-ə əsaslanır və şərti operatorlar və dövrlər vasitəsilə icra üzərində tam nəzarət təmin edir.
Deklarativ Pipeline avtomatik olaraq Sandbox — Groovy skriptlərini icra etmək üçün təhlükəsiz mühit yaradır. Bu, təhlükəli metodlara Java və Groovy girişini məhdudlaşdırır ki, bu da pipeline təhlükəsizliyinin administrator tərəfindən idarə olunduğu korporativ mühitlər üçün vacibdir.
Deklarativ Pipeline dörd əsas blok üzərində qurulur: pipeline(kök blok), agent (agentin göstərilməsi), stages (mərhələlərin ardıcıllığı) və post (bitdikdən sonra hərəkətlər). Hər stage yığma əmrləri ilə steps ehtiva edir, post blok isə uğur, uğursuzluq və ya qeyri-sabit yığma statusu zamanı hərəkətləri təyin edir.
Post bloku xüsusilə mobil layihələr üçün faydalıdır — burada yığma uğursuz olduqda Slack-ə bildiriş göndərilməsi və ya uğurlu başa çatdıqdan sonra IPA və APK arxivlərinin arxivləşdirilməsi konfiqurasiya edilə bilər. Jenkins post hərəkətlərini zəmanətlə icra edir, hətta pipeline əl ilə dayandırılsa belə.
// iOS tətbiqi üçün Deklarativ 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'
}
}
}
}
Scripted Pipeline agent əvəzinə node bloku təmin edir və dinamik budaqlanma üçün Groovy konstruksiyalarından istifadə etməyə imkan verir. Bu sintaksis mərhələlər dəstinin yığma parametrlərindən və ya əvvəlki addımların nəticələrindən asılı olduğu pipeline-lar üçün əlverişlidir.
// Paralel mərhələlərlə Scripted Pipeline
node('macos') {
stage('Parallel Builds') {
parallel(
ios: { buildIOS() },
android: { buildAndroid() }
)
}
}
def buildIOS() {
sh 'fastlane ios build'
}
iOS layihələri üçün Jenkinsfile Xcode, CocoaPods və ya Swift Package Manager və Fastlane quraşdırılmış macOS agenti tələb edir. Tipik pipeline mərhələləri əhatə edir: asılılıqların quraşdırılması, yığma, testlərin icrası, kodun imzalanması və TestFlight və ya App Store-a çatdırılma.
Jenkinsdə iOS yığmalarının əsas xüsusiyyəti sertifikatların və provisioning profillərinin idarə edilməsidir. Sertifikatları depodan avtomatik əldə etmək üçün Fastlane Match və ya açarları təhlükəsiz saxlamaq üçün Jenkins Credentials Binding plaqinindən istifadə etmək tövsiyə olunur.
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 vahid testləri üçün simulator göstərilməklə xcodebuild test istifadə edin. Jenkins JUnit plaqini vasitəsilə XCTest hesabatlarının dərcini dəstəkləyir — test nəticələrini yığma panelinə yerləşdirmək üçün .xcresult faylını XML formatına çevirin.
Jenkinsdə Android yığmaları Java JDK, Android SDK, Gradle və emulyatorlar quraşdırılmış Linux agentlərində icra olunur. Pipeline mərhələləri əhatə edir: linter yoxlaması, vahid testlər, APK və ya AAB yığması, emulyatorda instrumental testlər və Google Play Console-da dərc.
Android SDK-nı idarə etmək üçün Jenkinsfile-də zəruri platformaları və build-tools quraşdırmaq üçün sdkmanager istifadə edin. Sonrakı işə salmaları sürətləndirmək üçün .gradle və .android qovluqlarını yığmalar arasında keşləmək tövsiyə olunur.
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-də instrumental testlər işə salınmış emulyator tələb edir. Jenkins testlərdən əvvəl avtomatik olaraq emulyator yaradan və işə salan Android Emulator plaqinini dəstəkləyir. Fiziki cihazlar üçün Firebase Test Lab istifadə edin — inteqrasiya Google Cloud SDK plaqini vasitəsilə mövcuddur.
Jenkins plaqin sistemi platformanın əsas üstünlüyüdür. 1800-dən çox plaqin CI/CD-nin bütün mərhələlərini əhatə edir: versiya nəzarət sistemləri ilə inteqrasiyadan bulud xidmətlərinə yerləşdirməyə qədər. Hər plaqin pipeline-a yeni addımlar əlavə edir və veb interfeysi əlavə konfiqurasiya səhifələri ilə genişləndirir.
Mobil inkişaf üçün etimadnamə idarəetmə plaqinləri dəsti məcburidir: App Store Connect tokenləri və Google Play xidmət hesablarını saxlamaq üçün Credentials Binding. Xcode Integration plaqini Jenkins UI-dən iOS tətbiqlərinin yığılması addımlarını əlavə edir.
| Plaqin | Məqsəd | Platforma |
|---|---|---|
| Git Integration | Deponun klonlanması, budaqlarla iş və Pull Request | iOS, Android |
| Gradle Plugin | Android yığması üçün Gradle tapşırıqlarının hesabat dərci ilə icrası | Android |
| Xcode Integration | Jenkinsfile olmadan iOS layihələrinin yığılması | iOS |
| Docker Pipeline | İzolyasiya olunmuş mühitdə Docker konteynerlərində yığmaların icrası | iOS, Android |
| Slack Notification | Yığma statusu haqqında Slack kanallarına bildirişlər | iOS, Android |
Docker Pipeline plaqini yığmanın hər mərhələsini ayrıca konteynerdə icra etməyə imkan verir ki, bu da mühitin təkrarlanmasını təmin edir və mühit fərqliliyi problemini aradan qaldırır. Android yığmaları üçün Gradle icmasından əvvəlcədən quraşdırılmış Android SDK olan image-lərdən istifadə edin.
Jenkins və Travis CI arasında seçim komandanın ölçüsündən, büdcədən və infrastruktur tələblərindən asılıdır. Jenkins — tam nəzarət ilə self-hosted həll, ayrılmış server və administrator tələb edir. Travis CI — istifadəyə görə ödənişli, server idarəçiliyi tələb etməyən bulud xidmətidir.
Startaplar və kiçik komandalar üçün Travis CI daha üstündür — sıfır infrastruktur xərcləri, GitHub ilə sadə inteqrasiya və iOS və Android üçün hazır yığmalar. Enterprise layihələri üçün Jenkins üstünlüklər verir: macOS-da öz runner-lar, korporativ təhlükəsizlik siyasətlərinə uyğunluq və Jenkinsfile vasitəsilə pipeline-ın incə konfiqurasiyası.
Stack Overflow Survey 2025 məlumatlarına görə, Jenkinsdən peşəkar tərtibatçıların 42%-i istifadə edir, Travis CI-dən isə 12%. Bununla belə, Travis CI ictimai depolarlar üçün pulsuz plan və minimal giriş həddi sayəsində Açıq Mənbə icmasında populyar olaraq qalır.
Jenkins onu mobil inkişaf üçün CI/CD standartına çevirən üstünlüklər dəsti təqdim edir. Pulsuz MIT lisenziyası serverin kommersiya layihələrində məhdudiyyətsiz istifadəsinə imkan verir, açıq mənbə kodu isə satıcıdan müstəqillik və təhlükəsizlik auditi imkanı təmin edir.
Master-Agent arxitekturası üfüqi miqyaslanmanı təmin edir — yeni agentin əlavə edilməsi pipeline-ların ötürmə qabiliyyətini xətti olaraq artırır. Jenkins Jenkins X vasitəsilə Kubernetes-də dinamik agentləri dəstəkləyir ki, bu da ehtiyac olduqda yığıcıları avtomatik yaratmağa və məhv etməyə imkan verir.
Plaqin ekosistemi bütün müasir alətləri əhatə edir: Docker, Kubernetes, Fastlane, SonarQube, GitLab, Bitbucket. Hazır plaqin olmadıqda, Java-da öz genişlənmənizi yaza və ya layihələr arasında kodu təkrar istifadə etmək üçün Pipeline Shared Libraries-dən istifadə edə bilərsiniz.
Tez-tez verilən suallar
Jenkins — iOS və Android tətbiqlərinin yığılması, sınaqdan keçirilməsi və çatdırılmasını avtomatlaşdırmaq üçün Açıq Mənbəli CI/CD serveridir. Java ilə işləyir, Master-Agent arxitekturası vasitəsilə paylanmış yığmaları dəstəkləyir və layihə deposunda veb interfeys və ya Jenkinsfile vasitəsilə konfiqurasiya edilir.
Jenkins özünüidarə edən infrastrukturu və plaqin sistemi ilə fərqlənir. Travis CI və ya GitHub Actions-dan fərqli olaraq, Jenkins öz serverinizdə quraşdırma tələb edir, lakin korporativ layihələr üçün yığma mühiti, təhlükəsizlik və giriş siyasətləri üzərində tam nəzarət verir.
Jenkins Pipeline — Jenkinsfile-də saxlanılan CI/CD prosesinin Groovy kod şəklində tərifidir. Pipeline yığma, sınaq və yerləşdirməni təsvir edən mərhələlərdən (stages) və addımlardan (steps) ibarətdir. Sadə ssenarilər üçün Declarative və mürəkkəb ssenarilər üçün Scripted olmaqla iki sintaksisi dəstəkləyir.
iOS üçün Xcode Integration və Keychain Manager məcburidir. Android üçün — Gradle Plugin və Android Emulator. Hər iki platforma üçün: Git Integration, Credentials Binding, Docker Pipeline və yığma statusu barədə bildirişlər üçün Slack Notification.
Jenkinsi serverdə quraşdırın, iOS üçün macOS agenti və Android üçün SDK quraşdırılmış Linux agenti əlavə edin. Deponun kökündə yığma mərhələlərinin təsviri ilə Jenkinsfile yaradın. iOS üçün kod imzalanması üçün Fastlane, Android üçün asılılıqların keşlənməsi ilə Gradle tapşırıqlarından istifadə edin.
Xülasə
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