CI/CD (Continuous Integration / Continuous Delivery) je praksa automatske izgradnje, testiranja i isporuke aplikacije pri svakoj promeni koda. Prema Statista (2025), 80% timova za mobilni razvoj koristi CI/CD u svom radu. Ovaj članak pokriva popularne CI alate, Fastlane za automatizaciju mobilnih izgradnji, kao i Canary Release i Feature Flags.
Ključne tačke
Continuous Integration je osnova CI/CD automatizacije za mobilne aplikacije. To je praksa gde svaki programer spaja svoj kod u zajednički repozitorijum nekoliko puta dnevno. Nakon svakog push-a, CI server automatski gradi projekat i pokreće testove. Ako testovi padnu, izgradnja se smatra polomljenom i tim odmah rešava problem. CI sprečava situaciju «radi na mojoj mašini» gde kod jednog programera lomi kod drugog.
Build Pipeline — niz koraka koji se izvršavaju pri svakom push-u: linting koda → jedinični testovi → debug APK/IPA izgradnja → integracioni testovi → release izgradnja. Svaki korak se pokreće samo nakon uspešnog prethodnog. Artefakti izgradnje — APK, IPA, AAB, izveštaji o testiranju — se čuvaju i dostupni su za preuzimanje.
Continuous Delivery — kod se automatski gradi i testira, ali odluku o objavljivanju u produkciju donosi čovek. Continuous Deployment — svaka uspešna izgradnja se automatski objavljuje u produkciju. Za mobilne aplikacije, CD (isporuka u prodavnice) putem TestFlight ili Internal Testing je češći, jer konačnu odluku o objavljivanju donosi programer ili menadžer. Staging — okruženje što bliže produkciji, koje se koristi za testiranje izgradnje pre objavljivanja.
GitHub Actions je ugrađeni CI/CD sistem za automatizaciju mobilnih aplikacija na GitHub-u. Actions koristi YAML konfiguraciju (.github/workflows) za opis pipeline-ova. Gotove akcije su dostupne za mobilni razvoj: actions/setup-java, gradle-build-action za Android, xcodebuild-action za iOS. GitHub Actions obezbeđuje 2000 besplatnih minuta mesečno za privatne repozitorijume.
Primer: Android workflow uključuje checkout koda, podešavanje JDK 17, keširanje Gradle zavisnosti, pokretanje lint i jediničnih testova, APK izgradnju i otpremanje artefakata. Za iOS — checkout, podešavanje Xcode, pod install, pokretanje XCTest, arhiviranje i IPA izvoz. GitHub Actions se integriše sa GitHub Releases, Slack i Telegram za obaveštenja.
GitLab CI je ugrađeni CI/CD sistem u GitLab-u, konfigurisan kroz .gitlab-ci.yml. GitLab CI koristi runner-e — agente koji izvršavaju zadatke. Za mobilni razvoj možete koristiti deljene runner-e (Linux za Android) ili sopstvene runner-e (macOS za iOS). GitLab CI podržava paralelne poslove, artefakte, okruženja i ručno odobravanje za produkcijska izdanja.
Bitrise je CI/CD platforma specijalizovana za automatizaciju mobilnih aplikacija. Bitrise nudi gotove Steps za Android, iOS, Flutter i React Native: Gradle Runner, Xcode Archive, Flutter Test, CocoaPods Install. Bitrise automatski konfiguriše potpisivanje koda za iOS (putem Codesigndoc) i obezbeđuje virtuelne mašine sa unapred instaliranim Xcode, Android SDK, Flutter i drugim alatima.
Prednosti Bitrise: jednostavno podešavanje kroz vizuelni Workflow editor, podrška za paralelne izgradnje, integracija sa Firebase Test Lab, App Store Connect i Google Play Console. Bitrise nudi 90 besplatnih minuta mesečno za lične projekte. U IT Sectr koristimo Bitrise za sve mobilne projekte — značajno pojednostavljuje CI/CD u poređenju sa ručnim podešavanjem GitHub Actions.
| Kriterijum | GitHub Actions | GitLab CI | Bitrise | CircleCI |
|---|---|---|---|---|
| Specijalizacija | Opšta | Opšta | Mobilna | Opšta |
| macOS za iOS | Da (macOS runner) | Sopstveni runner | Da (ugrađeno) | Da (macOS) |
| Besplatni limit | 2000 min/mes | 400 min/mes | 90 min/mes | 6000 min/mes |
| Fastlane integracija | Preko run script | Preko run script | Gotov Step | Preko run script |
| Code Signing | Ručno podešavanje | Ručno podešavanje | Automatsko | Preko Fastlane |
| Paralelne izgradnje | Da | Da | Da | Da |
Fastlane je alat za automatizaciju mobilnih aplikacija za iOS i Android, napisan u Ruby-ju. Fastlane se sastoji od sistema gotovih akcija (preko 200) i DSL-a za opisivanje scenarija kroz Fastfile. Fastlane rešava zadatke koje svaki mobilni programer obavlja ručno: potpisivanje koda, kreiranje snimaka ekrana, otpremanje u TestFlight i Google Play, upravljanje sertifikatima i provisioning profilima.
Lane — imenovani scenario u Fastfile-u. Primer: lane :release do — lanac akcija za objavljivanje izdanja. Match — alat za bezbedno skladištenje i sinhronizaciju sertifikata i provisioning profila kroz šifrovani Git repozitorijum. Gym — izgradnja i arhiviranje iOS aplikacija (omotač oko xcodebuild). Pilot — otpremanje i upravljanje izgradnjama u TestFlight-u. Deliver — otpremanje aplikacije i metapodataka u App Store Connect. Snapshot — automatsko kreiranje snimaka ekrana na svim jezicima. Screengrab — automatsko kreiranje snimaka ekrana za Android.
Primer Fastfile za Android: lane :beta poziva gradle (assembleRelease), zatim firebase_app_distribution za distribuciju testerima. Za iOS: lane :beta poziva match (preuzimanje sertifikata), gym (arhiviranje) i pilot (otpremanje u TestFlight). Fastlane se može pokretati lokalno i na CI serveru — što ga čini univerzalnim alatom u svakom mobilnom projektu.
Canary Release je strategija CI/CD automatizacije za uvođenje nove verzije aplikacije na mali procenat korisnika (1–5%) pre potpunog objavljivanja. U Google Play Console ovo se implementira kroz Staged Rollout: objavljujete ažuriranje za 5% publike, pratite kraševe i metrike i povećavate procenat ako nema problema. U App Store Connect — kroz Phased Release for Automatic Updates.
A/B Testing — poređenje dve verzije jedne funkcije na nasumičnim grupama korisnika. U mobilnom razvoju, A/B testovi se sprovode kroz Feature Flags, Firebase Remote Config ili serversku logiku. Canary Release i A/B testovi minimiziraju rizike prilikom uvođenja novih funkcija.
Feature Flag (Feature Toggle) — uslovno uključivanje funkcionalnosti bez implementacije novog koda. Feature Flag je provera u kodu: if (featureFlag.isEnabled()) { /* novi kod */ } else { /* stari kod */ }. Zastavice se upravljaju kroz servise: LaunchDarkly, Split.io, Firebase Remote Config. Feature Flags omogućavaju programerima da spoje kod u main čak i ako funkcija još nije spremna za korisnike.
LaunchDarkly — najpopularnija platforma za upravljanje Feature Flags. LaunchDarkly obezbeđuje SDK za iOS, Android, Flutter i React Native. Možete uključiti funkcije za određene korisnike, segmente, regione ili procenat publike. Feature Flags se takođe koriste kao kill switch — trenutno isključivanje problematične funkcije bez objavljivanja nove verzije aplikacije.
Često postavljana pitanja
Počnite sa GitHub Actions — ako je vaš kod na GitHub-u. Actions je besplatan za javne repozitorijume, ima ugrađenu podršku za Android i iOS (macOS runner) i ogroman ekosistem gotovih akcija. Za mobilnu specijalizaciju — Bitrise.
Ne, CI servisi (GitHub Actions, Bitrise, CircleCI) obezbeđuju macOS runner. Plaćate po minutima korišćenja. Za lokalno otklanjanje grešaka u Fastlane-u potreban je Mac, ali CI može raditi u oblaku.
Canary Release — uvođenje nove verzije na podskup korisnika radi provere stabilnosti. A/B test — poređenje dve varijante jedne funkcije radi izbora bolje. Canary je o pouzdanosti, A/B je o konverziji.
Fastlane nije obavezan, ali se izuzetno preporučuje. Bez Fastlane-a morali biste ručno pokretati xcodebuild, upravljati sertifikatima i otpremati izgradnje putem web interfejsa. Fastlane automatizuje sve ove zadatke jednom komandom.
Match je Fastlane alat za upravljanje iOS Code Signing sertifikatima. Match čuva sertifikate i provisioning profile u šifrovanom Git repozitorijumu i sinhronizuje ih između svih programera i CI servera.
Sažetak
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.