CI/CD (Continuous Integration / Continuous Delivery) je praxe automatického sestavování, testování a doručování aplikace při každé změně kódu. Podle Statista (2025) používá 80 % týmů mobilního vývoje CI/CD. Tento článek pokrývá populární CI nástroje, Fastlane pro automatizaci mobilních sestavení, stejně jako Canary Release a Feature Flags.
Klíčové body
Continuous Integration je základem automatizace CI/CD pro mobilní aplikace. Je to praxe, kdy každý vývojář několikrát denně slučuje svůj kód do sdíleného repozitáře. Po každém push CI server automaticky sestaví projekt a spustí testy. Pokud testy selžou, sestavení je považováno za rozbité a tým okamžitě opraví problém. CI zabraňuje situaci «u mě to funguje», kdy kód jednoho vývojáře rozbíjí kód druhého.
Build Pipeline — sekvence kroků provedených při každém push: lintování kódu → unit testy → sestavení debug APK/IPA → integrační testy → sestavení release. Každý krok se spouští až po úspěšném dokončení předchozího. Artefakty sestavení — APK, IPA, AAB, testovací zprávy — jsou uloženy a dostupné ke stažení.
Continuous Delivery — kód je automaticky sestaven a testován, ale o vydání do produkce rozhoduje člověk. Continuous Deployment — každé úspěšné sestavení je automaticky vydáno do produkce. U mobilních aplikací je běžnější CD (doručení do obchodů) přes TestFlight nebo Internal Testing, protože konečné rozhodnutí o publikování činí vývojář nebo manažer. Staging — prostředí co nejbližší produkci, používané k testování sestavení před vydáním.
GitHub Actions je vestavěný systém CI/CD pro automatizaci mobilních aplikací na GitHubu. Actions používá konfiguraci YAML (.github/workflows) k definici pipeline. K dispozici jsou hotové akce pro mobilní vývoj: actions/setup-java, gradle-build-action pro Android, xcodebuild-action pro iOS. GitHub Actions poskytuje 2000 bezplatných minut měsíčně pro soukromé repozitáře.
Příklad: Android workflow zahrnuje checkout kódu, nastavení JDK 17, cachování závislostí Gradle, spuštění lint a unit testů, sestavení APK a nahrání artefaktu. Pro iOS — checkout, nastavení Xcode, pod install, spuštění XCTest, archivace a export IPA. GitHub Actions se integruje s GitHub Releases, Slack a Telegram pro oznámení.
GitLab CI je vestavěný systém CI/CD v GitLabu, konfigurovaný přes .gitlab-ci.yml. GitLab CI používá runnery — agenty, kteří provádějí úlohy. Pro mobilní vývoj můžete použít sdílené runnery (Linux pro Android) nebo vlastní runnery (macOS pro iOS). GitLab CI podporuje paralelní úlohy, artefakty, prostředí a ruční schvalování pro produkční vydání.
Bitrise je CI/CD platforma specializovaná na automatizaci mobilních aplikací. Bitrise nabízí hotové Steps pro Android, iOS, Flutter a React Native: Gradle Runner, Xcode Archive, Flutter Test, CocoaPods Install. Bitrise automaticky konfiguruje podepisování kódu pro iOS (přes Codesigndoc) a poskytuje virtuální stroje s předinstalovaným Xcode, Android SDK, Flutter a dalšími nástroji.
Výhody Bitrise: jednoduché nastavení přes vizuální editor Workflow, podpora paralelních sestavení, integrace s Firebase Test Lab, App Store Connect a Google Play Console. Bitrise poskytuje 90 bezplatných minut měsíčně pro osobní projekty. V IT Sectr používáme Bitrise pro všechny mobilní projekty — výrazně zjednodušuje CI/CD ve srovnání s ručním nastavením GitHub Actions.
| Kritérium | GitHub Actions | GitLab CI | Bitrise | CircleCI |
|---|---|---|---|---|
| Specializace | Obecná | Obecná | Mobilní | Obecná |
| macOS pro iOS | Ano (macOS runner) | Vlastní runner | Ano (vestavěný) | Ano (macOS) |
| Bezplatný limit | 2000 min/měsíc | 400 min/měsíc | 90 min/měsíc | 6000 min/měsíc |
| Integrace Fastlane | Přes run script | Přes run script | Hotový Step | Přes run script |
| Code Signing | Ruční nastavení | Ruční nastavení | Automatické | Přes Fastlane |
| Paralelní sestavení | Ano | Ano | Ano | Ano |
Fastlane je nástroj pro automatizaci mobilních aplikací pro iOS a Android, napsaný v Ruby. Fastlane se skládá ze systému hotových akcí (200+) a DSL pro popis scénářů přes Fastfile. Fastlane řeší úkoly, které každý mobilní vývojář dělá ručně: podepisování kódu, vytváření snímků obrazovky, nahrávání do TestFlight a Google Play, správa certifikátů a provisioning profilů.
Lane — pojmenovaný scénář v Fastfile. Příklad: lane :release do — řetězec akcí pro vydání verze. Match — nástroj pro bezpečné ukládání a synchronizaci certifikátů a provisioning profilů přes šifrovaný Git repozitář. Gym — sestavení a archivace iOS aplikací (obal kolem xcodebuild). Pilot — nahrávání a správa sestavení v TestFlight. Deliver — nahrávání aplikace a metadat do App Store Connect. Snapshot — automatické vytváření snímků obrazovky ve všech jazycích. Screengrab — automatické vytváření snímků obrazovky pro Android.
Příklad Fastfile pro Android: lane :beta volá gradle (assembleRelease), poté firebase_app_distribution pro distribuci testerům. Pro iOS: lane :beta volá match (stažení certifikátů), gym (archivaci) a pilot (nahrání do TestFlight). Fastlane lze spouštět lokálně i na CI serveru — což z něj činí univerzální nástroj v každém mobilním projektu.
Canary Release je strategie automatizace CI/CD pro zavedení nové verze aplikace malému procentu uživatelů (1–5 %) před úplným vydáním. V Google Play Console je to implementováno přes Staged Rollout: vydáte aktualizaci pro 5 % svého publika, sledujete pády a metriky a pokud nejsou problémy, zvýšíte procento. V App Store Connect — přes Phased Release for Automatic Updates.
A/B testování — porovnání dvou verzí jedné funkce na náhodných skupinách uživatelů. V mobilním vývoji se A/B testy provádějí přes Feature Flags, Firebase Remote Config nebo serverovou logiku. Canary Release a A/B testy minimalizují rizika při zavádění nových funkcí.
Feature Flag (Feature Toggle) — podmíněné aktivování funkčnosti bez nasazení nového kódu. Feature Flag je kontrola v kódu: if (featureFlag.isEnabled()) { /* nový kód */ } else { /* starý kód */ }. Flagy jsou spravovány prostřednictvím služeb: LaunchDarkly, Split.io, Firebase Remote Config. Feature Flags umožňují vývojářům sloučit kód do main, i když funkce ještě není připravena pro uživatele.
LaunchDarkly — nejpopulárnější platforma pro správu Feature Flags. LaunchDarkly poskytuje SDK pro iOS, Android, Flutter a React Native. Můžete aktivovat funkce pro konkrétní uživatele, segmenty, regiony nebo procento publika. Feature Flags se také používají jako kill switch — okamžité vypnutí problematické funkce bez vydání nové verze aplikace.
Často kladené otázky
Začněte s GitHub Actions — pokud je váš kód na GitHubu. Actions je zdarma pro veřejné repozitáře, má vestavěnou podporu pro Android a iOS (macOS runner) a obrovský ekosystém hotových akcí. Pro mobilní specializaci — Bitrise.
Ne, CI služby (GitHub Actions, Bitrise, CircleCI) poskytují macOS runnery. Platíte za minuty použití. Pro místní ladění Fastlane potřebujete Mac, ale CI může běžet v cloudu.
Canary Release — zavedení nové verze na podmnožinu uživatelů pro kontrolu stability. A/B testování — porovnání dvou variant jedné funkce pro výběr té lepší. Canary je o spolehlivosti, A/B o konverzi.
Fastlane není povinný, ale velmi doporučovaný. Bez Fastlane byste museli ručně spouštět xcodebuild, spravovat certifikáty a nahrávat sestavení přes webové rozhraní. Fastlane automatizuje všechny tyto úkoly jediným příkazem.
Match je nástroj Fastlane pro správu iOS Code Signing certifikátů. Match ukládá certifikáty a provisioning profily v šifrovaném Git repozitáři a synchronizuje je mezi všemi vývojáři a CI serverem.
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í.