Jenkins je CI/CD server s otevřeným zdrojovým kódem, který automatizuje sestavování, testování a doručování mobilních aplikací. Na rozdíl od cloudových řešení se Jenkins nasazuje na vlastní infrastruktuře a konfiguruje se přes webové rozhraní nebo kód. Podle údajů CloudBees, 2025 používá Jenkinse pro CI/CD procesy více než 1,6 milionu týmů. Systém podporuje distribuovaná sestavení prostřednictvím architektury Master-Agent a více než 1800 pluginů pro integraci s vývojářskými nástroji.
Hlavní body
Jenkins je CI/CD server s otevřeným zdrojovým kódem napsaný v Java pro automatizaci sestavování, testování a doručování softwaru. V kontextu mobilního vývoje umožňuje Jenkins týmům automaticky sestavovat iOS a Android aplikace, spouštět unit a UI testy, podepisovat buildy a doručovat je do App Store nebo Google Play bez ručních operací.
Potřeba Jenkins vzniká, když projekt přeroste lokální sestavení a vyžaduje pravidelné integrace kódu od několika vývojářů. Ruční sestavení každého commitu zabírá čas a je náchylné k chybám — Jenkins řeší tento problém spouštěním automatických pipeline při každé změně v repozitáři.
Podle zprávy JetBrains Developer Ecosystem 2025 používá 54% mobilních týmů Jenkins jako primární CI/CD platformu. Systém podporuje jakýkoli jazyk a platformu díky architektuře pluginů — pro Android jsou k dispozici Gradle a SDK Manager, pro iOS — Xcode Integration a Keychain Manager.
Používejte Jenkins v projektech, kde je vyžadována plná kontrola nad infrastrukturou sestavení, přizpůsobení každého kroku CI/CD procesu a integrace s podnikovými bezpečnostními systémy.
Architektura Jenkins je postavena na modelu Master-Agent. Master server spravuje konfiguraci, plánování úkolů a webové rozhraní, zatímco agenti provádějí skutečná sestavení na vyhrazených nebo dočasných strojích. Tato architektura umožňuje paralelně sestavovat iOS aplikaci na macOS agentovi a Android aplikaci na Linux agentovi z jednoho Master serveru.
Master uzel Jenkins ukládá všechna nastavení, pluginy a historii sestavení v domovském adresáři $JENKINS_HOME. Agenti se připojují k Masterovi přes SSH, JNLP nebo WebSocket a přijímají úkoly z fronty. Pro mobilní vývoj se doporučuje vyčlenit samostatné macOS agenty pro iOS sestavení a Linux agenty pro Android sestavení s nainstalovanými SDK a nástroji.
Každý agent může být trvalý server nebo dynamický Docker kontejner. Podle dokumentace CloudBees snižuje rozdělení sestavení na 5 agentů celkový čas CI/CD pipeline o 70% při 10 paralelních úkolech.
Jenkins Pipeline je definice celého CI/CD procesu ve formě kódu uloženého v repozitáři spolu s projektem. Pipeline je popsán v Jenkinsfile a podporuje dvě syntaxe: Declarative (strukturovaná, s předdefinovanými bloky) a Scripted (flexibilní, založená na Groovy s plnou kontrolou toku provádění).
Deklarativní syntaxe je doporučena pro většinu mobilních projektů, protože poskytuje čitelnost a předvídatelnost. Scripted Pipeline je vhodný pro složité scénáře s dynamickými paralelními fázemi, vlastním zpracováním chyb a podmíněnou logikou založenou na proměnných prostředí.
Jenkins Pipeline podporuje dvě syntaxe, které určují způsob popisu kroků CI/CD procesu. Deklarativní syntaxe používá blokovou strukturu s klíčovými slovy pipeline, stages, stage a steps, což ji činí intuitivní pro nové uživatele. Skriptová syntaxe je založena na Groovy a poskytuje plnou kontrolu nad prováděním pomocí podmíněných příkazů a smyček.
Deklarativní Pipeline automaticky vytváří Sandbox — bezpečné prostředí pro provádění Groovy skriptů. To omezuje přístup k nebezpečným metodám Java a Groovy, což je kritické pro podniková prostředí, kde bezpečnost pipeline řídí administrátor.
Deklarativní Pipeline je postaven na čtyřech klíčových blocích: pipeline (kořenový blok), agent (určení agenta), stages (posloupnost fází) a post (akce po dokončení). Každá stage obsahuje steps s příkazy sestavení a blok post definuje akce při úspěchu, neúspěchu nebo nestabilním stavu sestavení.
Blok post je užitečný zejména pro mobilní projekty — lze v něm nakonfigurovat odesílání upozornění do Slacku při selhání sestavení nebo archivaci artefaktů IPA a APK po úspěšném dokončení. Jenkins provádí post akce garantovaně, i když byl pipeline ručně přerušen.
// Deklarativní Pipeline pro iOS aplikaci
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 poskytuje blok node místo agent a umožňuje použití Groovy konstrukcí pro dynamické větvení. Tato syntaxe je vhodná pro pipeline, kde sada fází závisí na parametrech sestavení nebo výsledcích předchozích kroků.
// Scripted Pipeline s paralelními fázemi
node('macos') {
stage('Parallel Builds') {
parallel(
ios: { buildIOS() },
android: { buildAndroid() }
)
}
}
def buildIOS() {
sh 'fastlane ios build'
}
Pro iOS projekty vyžaduje Jenkinsfile macOS agenta s nainstalovanými Xcode, CocoaPods nebo Swift Package Manager a Fastlane. Typická pipeline zahrnuje fáze: instalace závislostí, sestavení, spuštění testů, podepsání kódu a doručení do TestFlight nebo App Store.
Klíčovou vlastností iOS sestavení v Jenkins je správa certifikátů a provisioning profilů. Doporučuje se používat Fastlane Match pro automatické získávání certifikátů z repozitáře nebo plugin Jenkins Credentials Binding pro bezpečné ukládání klíčů.
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'
}
}
}
}
Pro iOS unit testy použijte xcodebuild test s určením simulátoru. Jenkins podporuje publikování XCTest reportů přes JUnit plugin — převeďte .xcresult do XML formátu pro vložení výsledků testů do dashboardu sestavení.
Android sestavení v Jenkins se provádějí na Linux agentech s nainstalovanými Java JDK, Android SDK, Gradle a emulátory. Pipeline zahrnuje fáze: kontrola linterem, unit testy, sestavení APK nebo AAB, instrumentální testy na emulátoru a publikování v Google Play Console.
Pro správu Android SDK použijte sdkmanager v Jenkinsfile pro instalaci potřebných platforem a build-tools. Doporučuje se ukládat do mezipaměti adresáře .gradle a .android mezi sestaveními pro urychlení následujících spuštění.
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'
}
}
}
}
}
Instrumentální testy na Android vyžadují spuštěný emulátor. Jenkins podporuje Android Emulator plugin, který automaticky vytvoří a spustí emulátor před testy. Pro fyzická zařízení použijte Firebase Test Lab — integrace je dostupná přes Google Cloud SDK plugin.
Systém pluginů Jenkins je klíčovou výhodou platformy. Více než 1800 pluginů pokrývá všechny fáze CI/CD: od integrace se systémy pro správu verzí po nasazení do cloudových služeb. Každý plugin přidává nové kroky do pipeline a rozšiřuje webové rozhraní o další konfigurační stránky.
Pro mobilní vývoj je povinná sada pluginů pro správu pověření: Credentials Binding pro ukládání tokenů App Store Connect a servisních účtů Google Play. Plugin Xcode Integration přidává kroky sestavení iOS aplikací z Jenkins UI.
| Plugin | Účel | Platforma |
|---|---|---|
| Git Integration | Klonování repozitáře, práce s větvemi a Pull Request | iOS, Android |
| Gradle Plugin | Spouštění Gradle úloh pro Android sestavení s publikováním zpráv | Android |
| Xcode Integration | Sestavení iOS projektů bez Jenkinsfile | iOS |
| Docker Pipeline | Spouštění sestavení v Docker kontejnerech s izolovaným prostředím | iOS, Android |
| Slack Notification | Upozornění o stavu sestavení na Slack kanálech | iOS, Android |
Plugin Docker Pipeline umožňuje spouštět každou fázi sestavení v samostatném kontejneru, což garantuje reprodukovatelnost prostředí a eliminuje problém rozdílů v prostředí. Pro Android sestavení použijte obrazy s předinstalovaným Android SDK od komunity Gradle.
Výběr mezi Jenkins a Travis CI závisí na velikosti týmu, rozpočtu a požadavcích na infrastrukturu. Jenkins je self-hosted řešení s plnou kontrolou, vyžadující vyhrazený server a administrátora. Travis CI je cloudová služba s platbou za použití, která nevyžaduje správu serverů.
Pro startupy a malé týmy je Travis CI výhodnější — nulové náklady na infrastrukturu, jednoduchá integrace s GitHub a hotová sestavení pro iOS a Android. Pro podnikové projekty poskytuje Jenkins výhody: vlastní běžce na macOS, soulad s podnikovými bezpečnostními politikami a detailní konfiguraci pipeline přes Jenkinsfile.
Podle Stack Overflow Survey 2025 používá Jenkins 42% profesionálních vývojářů oproti 12% pro Travis CI. Travis CI však zůstává populární v komunitě open source díky bezplatnému plánu pro veřejné repozitáře a minimálnímu vstupnímu prahu.
Jenkins poskytuje sadu výhod, které z něj činí standard CI/CD pro mobilní vývoj. Bezplatná licence MIT umožňuje použití serveru bez omezení v komerčních projektech a otevřený zdrojový kód garantuje nezávislost na dodavateli a možnost bezpečnostního auditu.
Architektura Master-Agent poskytuje horizontální škálovatelnost — přidání nového agenta lineárně zvyšuje kapacitu pipeline. Jenkins podporuje dynamické agenty v Kubernetes přes Jenkins X, což umožňuje automatické vytváření a ničení builderů podle potřeby.
Ekostystém pluginů pokrývá všechny moderní nástroje: Docker, Kubernetes, Fastlane, SonarQube, GitLab, Bitbucket. Pokud není k dispozici hotový plugin, můžete napsat vlastní rozšíření v Java nebo použít Pipeline Shared Libraries pro opětovné použití kódu mezi projekty.
Často kladené otázky
Jenkins je Open Source CI/CD server pro automatizaci sestavování, testování a doručování iOS a Android aplikací. Běží na Java, podporuje distribuovaná sestavení prostřednictvím architektury Master-Agent a konfiguruje se přes webové rozhraní nebo Jenkinsfile v repozitáři projektu.
Jenkins se vyznačuje samoobslužnou infrastrukturou a systémem pluginů. Na rozdíl od Travis CI nebo GitHub Actions vyžaduje Jenkins instalaci na vlastní server, ale poskytuje plnou kontrolu nad prostředím sestavení, zabezpečením a přístupovými politikami pro podnikové projekty.
Jenkins Pipeline je definice CI/CD procesu ve formě Groovy kódu uloženého v Jenkinsfile. Pipeline se skládá z fází (stages) a kroků (steps) popisujících sestavení, testování a nasazení. Podporuje dvě syntaxe: Declarative pro jednoduché scénáře a Scripted pro složité.
Pro iOS jsou povinné Xcode Integration a Keychain Manager. Pro Android — Gradle Plugin a Android Emulator. Pro obě platformy: Git Integration, Credentials Binding, Docker Pipeline a Slack Notification pro upozornění o stavu sestavení.
Nainstalujte Jenkins na server, přidejte macOS agenta pro iOS a Linux agenta pro Android s nainstalovaným SDK. Vytvořte Jenkinsfile v kořeni repozitáře s popisem fází sestavení. Pro iOS použijte Fastlane pro podepisování kódu, pro Android — Gradle úlohy s cache závislostí.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také