Jenkins је CI/CD сервер отвореног кода који аутоматизује изградњу, тестирање и испоруку мобилних апликација. За разлику од облачних решења, Jenkins се поставља на сопствену инфраструктуру и подешава преко веб интерфејса или кода. Према подацима CloudBees, 2025, више од 1,6 милиона тимова користи Jenkins за CI/CD процесе. Систем подржава дистрибуиране изградње кроз Master-Agent архитектуру и више од 1800 прикључака за интеграцију са развојним алатима.
Главно
Jenkins је CI/CD сервер отвореног кода написан у Java за аутоматизацију изградње, тестирања и испоруке софтвера. У контексту мобилног развоја, Jenkins омогућава тимовима да аутоматски граде iOS и Android апликације, покрећу јединичне и UI тестове, потписују билдове и испоручују их у App Store или Google Play без ручних операција.
Потреба за Jenkins-ом настаје када пројекат прерасте локалне изградње и захтева редовне интеграције кода од више програмера. Ручна изградња сваког комита заузима време и подложна је грешкама — Jenkins решава овај проблем покретањем аутоматских пајплајнова при свакој промени у репозиторијуму.
Према извештају JetBrains Developer Ecosystem 2025, 54% мобилних тимова користи Jenkins као главну CI/CD платформу. Систем подржава било које језике и платформе захваљујући архитектури прикључака — за Android су доступни Gradle и SDK Manager, за iOS — Xcode Integration и Keychain Manager.
Користите Jenkins у пројектима где је потребна потпуна контрола над инфраструктуром изградње, прилагођавање сваког корака CI/CD процеса и интеграција са корпоративним сигурносним системима.
Архитектура Jenkins-а изграђена је према моделу Master-Agent. Master сервер управља конфигурацијом, планирањем задатака и веб интерфејсом, а агенти извршавају стварне изградње на наменским или привременим машинама. Ова архитектура омогућава паралелно грађење iOS апликације на macOS агенту и Android апликације на Linux агенту са истог Master сервера.
Master чвор Jenkins-а чува сва подешавања, прикључке и историју изградњи у главном директоријуму $JENKINS_HOME. Агенти се повезују на Master преко SSH, JNLP или WebSocket-а и примају задатке из реда. За мобилни развој препоручује се издвајање посебних macOS агената за iOS изградње и Linux агената за Android изградње са инсталираним SDK и алатима.
Сваки агент може бити стални сервер или динамички Docker контејнер. Према документацији CloudBees, расподела изградњи на 5 агената смањује укупно време CI/CD пајплајна за 70% при 10 паралелних задатака.
Jenkins Pipeline је дефиниција целог CI/CD процеса у облику кода који се чува у репозиторијуму заједно са пројектом. Pipeline се описује у Jenkinsfile-у и подржава две синтаксе: Declarative (структурирана, са унапред дефинисаним блоковима) и Scripted (флексибилна, заснована на Groovy са потпуном контролом тока извршења).
Декларативна синтакса се препоручује за већину мобилних пројеката, јер обезбеђује читљивост и предвидљивост. Scripted Pipeline је погодан за сложене сценарије са динамичким паралелним стадијумима, прилагођеном обрадом грешака и условном логиком заснованом на променљивим окружења.
Jenkins Pipeline подржава две синтаксе које одређују начин описивања корака CI/CD процеса. Declarative синтакса користи блоковску структуру са кључним речима pipeline, stages, stage и steps, што је чини интуитивном за нове кориснике. Scripted синтакса је заснована на Groovy и пружа потпуну контролу над извршењем кроз условне операторе и петље.
Декларативни Pipeline аутоматски креира Sandbox — безбедно окружење за извршавање Groovy скрипти. Ово ограничава приступ опасним методама Java и Groovy, што је критично за корпоративна окружења где безбедност пајплајнова контролише администратор.
Декларативни Pipeline се заснива на четири кључна блока: pipeline (корени блок), agent (навођење агента), stages (низ стадијума) и post (акције након завршетка). Сваки stage садржи steps са командама изградње, а post блок дефинише акције при успеху, неуспеху или нестабилном статусу изградње.
Блок post је посебно користан за мобилне пројекте — у њему се може подесити слање обавештења у Slack при паду изградње или архивирање IPA и APK артефаката након успешног завршетка. Jenkins извршава post акције гарантовано, чак и ако је pipeline ручно прекинут.
// Declarative Pipeline за iOS апликацију
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 пружа блок node уместо agent и омогућава коришћење Groovy конструкција за динамичко гранање. Ова синтакса је погодна за пајплајнове где скуп стадијума зависи од параметара изградње или резултата претходних корака.
// Scripted Pipeline са паралелним стадијумима
node('macos') {
stage('Parallel Builds') {
parallel(
ios: { buildIOS() },
android: { buildAndroid() }
)
}
}
def buildIOS() {
sh 'fastlane ios build'
}
За iOS пројекте, Jenkinsfile захтева macOS агента са инсталираним Xcode, CocoaPods или Swift Package Manager и Fastlane. Типичан пајплајн укључује стадијуме: инсталација зависности, изградња, покретање тестова, потписивање кода и испорука у TestFlight или App Store.
Кључна карактеристика iOS изградњи у Jenkins-у је управљање сертификатима и provisioning профилима. Препоручује се коришћење Fastlane Match за аутоматско преузимање сертификата из репозиторијума или Jenkins Credentials Binding прикључка за безбедно чување кључева.
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 јединичне тестове користите xcodebuild test са навођењем симулатора. Jenkins подржава објављивање XCTest извештаја кроз JUnit прикључак — конвертујте .xcresult у XML формат за уграђивање резултата тестова у контролну таблу изградње.
Android изградње у Jenkins-у се извршавају на Linux агентима са инсталираним Java JDK, Android SDK, Gradle и емулаторима. Пајплајн укључује стадијуме: провера линтером, јединични тестови, изградња APK или AAB, инструментални тестови на емулатору и објављивање у Google Play Console.
За управљање Android SDK користите sdkmanager у Jenkinsfile-у за инсталацију потребних платформи и build-tools. Препоручује се кеширање директоријума .gradle и .android између изградњи за убрзање наредних покретања.
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 захтевају покренут емулатор. Jenkins подржава Android Emulator прикључак који аутоматски креира и покреће емулатор пре тестова. За физичке уређаје користите Firebase Test Lab — интеграција је доступна кроз Google Cloud SDK прикључак.
Систем прикључака Jenkins-а је кључна предност платформе. Више од 1800 прикључака покрива све етапе CI/CD: од интеграције са системима за контролу верзија до имплементације у облачне сервисе. Сваки прикључак додаје нове кораке у пајплајн и проширује веб интерфејс додатним страницама конфигурације.
За мобилни развој обавезан је сет прикључака за управљање акредитивима: Credentials Binding за чување токена App Store Connect и сервисних налога Google Play. Xcode Integration прикључак додаје кораке изградње iOS апликација из Jenkins UI-ја.
| Прикључак | Намена | Платформа |
|---|---|---|
| Git Integration | Клонирање репозиторијума, рад са гранама и Pull Request | iOS, Android |
| Gradle Plugin | Покретање Gradle задатака за Android изградњу са објављивањем извештаја | Android |
| Xcode Integration | Изградња iOS пројеката без Jenkinsfile-а | iOS |
| Docker Pipeline | Покретање изградњи у Docker контејнерима са изолованим окружењем | iOS, Android |
| Slack Notification | Обавештења о статусу изградњи у Slack каналима | iOS, Android |
Прикључак Docker Pipeline омогућава покретање сваке етапе изградње у засебном контејнеру, што гарантује поновљивост окружења и елиминише проблем разлика у окружењима. За Android изградње користите слике са пред-инсталираним Android SDK-јем од Gradle заједнице.
Избор између Jenkins-а и Travis CI зависи од величине тима, буџета и захтева за инфраструктуром. Jenkins је self-hosted решење са потпуном контролом, које захтева наменски сервер и администратора. Travis CI је облачни сервис са плаћањем по употреби, који не захтева управљање серверима.
За стартапе и мале тимове, Travis CI је пожељнији — нулти трошкови инфраструктуре, једноставна интеграција са GitHub-ом и готове изградње за iOS и Android. За Enterprise пројекте, Jenkins даје предности: сопствене ранпере на macOS, усклађеност са корпоративним сигурносним политикама и фино подешавање пајплајна кроз Jenkinsfile.
Према подацима Stack Overflow Survey 2025, Jenkins користи 42% професионалних програмера наспрам 12% за Travis CI. Међутим, Travis CI остаје популаран у Open Source заједници захваљујући бесплатном плану за јавне репозиторијуме и минималном прагу уласка.
Jenkins пружа скуп предности које га чине стандардом CI/CD за мобилни развој. Бесплатна MIT лиценца омогућава коришћење сервера без ограничења у комерцијалним пројектима, а отворени изворни код гарантује независност од продавца и могућност безбедносне ревизије.
Архитектура Master-Agent обезбеђује хоризонтално скалирање — додавање новог агента повећава пропусну моћ пајплајнова линеарно. Jenkins подржава динамичке агенте у Kubernetes-у кроз Jenkins X, што омогућава аутоматско креирање и уништавање градитеља по потреби.
Екосистем прикључака покрива све модерне алате: Docker, Kubernetes, Fastlane, SonarQube, GitLab, Bitbucket. У недостатку готовог прикључка, могуће је написати сопствено проширење на Java или користити Pipeline Shared Libraries за поновну употребу кода између пројеката.
Често постављана питања
Jenkins је Open Source CI/CD сервер за аутоматизацију изградње, тестирања и испоруке iOS и Android апликација. Ради на Java, подржава дистрибуиране изградње кроз Master-Agent архитектуру и подешава се преко веб интерфејса или Jenkinsfile-а у репозиторијуму пројекта.
Jenkins се истиче самоуправљивом инфраструктуром и системом прикључака. За разлику од Travis CI или GitHub Actions, Jenkins захтева инсталацију на сопствени сервер, али даје потпуну контролу над окружењем изградње, безбедношћу и политикама приступа за корпоративне пројекте.
Jenkins Pipeline је дефиниција CI/CD процеса у облику Groovy кода који се чува у Jenkinsfile-у. Pipeline се састоји од стадијума (stages) и корака (steps) који описују изградњу, тестирање и имплементацију. Подржава две синтаксе: Declarative за једноставне сценарије и Scripted за сложене.
За iOS су обавезни Xcode Integration и Keychain Manager. За Android — Gradle Plugin и Android Emulator. За обе платформе: Git Integration, Credentials Binding, Docker Pipeline и Slack Notification за обавештења о статусу изградњи.
Инсталирајте Jenkins на сервер, додајте macOS агента за iOS и Linux агента за Android са инсталираним SDK. Креирајте Jenkinsfile у корену репозиторијума са описом стадијума изградње. За iOS користите Fastlane за потписивање кода, за Android — Gradle задатке са кеширањем зависности.
Резиме
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође