Přeskočit na obsah
_CORE
AI & Agentic Systems Core Information Systems Cloud & Platform Engineering Data Platform & Integration Security & Compliance QA, Testing & Observability IoT, Automation & Robotics Mobile & Digital Banking & Finance Insurance Public Administration Defense & Security Healthcare Energy & Utilities Telco & Media Manufacturing Logistics & E-commerce Retail & Loyalty
Reference Technologie Blog Know-how Nástroje
O nás Spolupráce Kariéra
CS EN
Pojďme to probrat

CI/CD & distribuce

Release za minuty. Hotfix za hodiny.

Automatizujeme celý release pipeline mobilních aplikací — build, testování, podpis, upload do Store. Žádné ruční kroky.

<15 min
Build time
2 týdny
Release cyklus
<4h
Hotfix delivery
<24h
Beta feedback loop

Proč automatizovaný mobilní CI/CD

Mobilní release není jako web deploy. Nemůžete deployment rollbacknout za sekundy. App Store review trvá hodiny až dny. Signing certificates, provisioning profiles, keystores — každý ruční krok je potenciální selhání.

Bez automatizace je release bolestivý proces, který tým odkládá. Features se hromadí v develop branchi, release se dělá jednou za měsíc, hotfixy jdou „až s příštím releasem.” Výsledek: pomalý feedback loop, frustrovaní uživatelé, nešťastní vývojáři.

Automatizovaný pipeline: Merge do main → automatický build → testy → signing → upload do Store → notifikace týmu. Celý proces na jedno kliknutí (nebo zero clicks s auto-deploy).

Fastlane pipeline

Fastlane je de facto standard pro automatizaci mobilního CI/CD. Ruby-based toolchain, který orchestruje celý release process.

iOS pipeline

lane :release do
  increment_build_number
  run_tests(scheme: "AppTests")
  match(type: "appstore")          # certificate management
  gym(scheme: "App")               # build
  pilot(skip_waiting: true)        # upload to TestFlight
  upload_to_app_store              # App Store release
end

Match pro certificate management: Provisioning profiles a signing certificates uložené v šifrovaném Git repozitáři. Každý vývojář a CI stroj sdílí stejné credentials. Žádné „nemůžu buildovat” — fastlane match stáhne a nainstaluje vše potřebné.

Metadata as code: App Store metadata (screenshots, popisy, release notes, keywords) verzované v Gitu. Lokalizace pro více jazyků. Review screenshots generované automaticky z UI testů (fastlane snapshot).

Android pipeline

lane :release do
  increment_version_code
  gradle(task: "test")
  gradle(task: "assembleRelease")
  supply(track: "internal")        # upload to Google Play
end

Keystore management: Signing keystore v secure storage (CI secrets, Vault). Upload key vs. app signing key oddělené (Google Play App Signing).

Bundle vs APK: Android App Bundle (AAB) jako default — Google Play generuje optimalizované APK per zařízení. Menší download, rychlejší instalace.

CI/CD infrastruktura

Build servery

  • GitHub Actions: Self-hosted macOS runners pro iOS buildy. Linux runners pro Android. Matrix build pro více verzí SDK.
  • Bitrise: Managed CI pro mobilní vývoj. macOS stroje pro iOS, Docker pro Android. Integrované s Fastlane.
  • Xcode Cloud: Apple’s CI/CD. Integrované s App Store Connect. Omezení: jen iOS/macOS.

Pipeline stages

  1. Lint & Static Analysis — SwiftLint, Detekt, ktlint. Code style enforcement automaticky.
  2. Unit Tests — Rychlé, izolované. Běží při každém push. Fail = blocked merge.
  3. Integration Tests — API contract testy, database testy. Běží na PR merge.
  4. UI Tests — E2E flows na simulátoru/emulátoru. Běží na PR merge a nightly.
  5. Build — Debug pro PR, Release pro main/release branch.
  6. Sign — Automatic signing s Match (iOS) / Keystore (Android).
  7. Upload — TestFlight/Firebase App Distribution pro beta, Store pro release.
  8. Notify — Slack/Teams notifikace s build statusem a QR kódem pro instalaci.

Paralelizace: iOS a Android buildy běží paralelně. Testy paralelně (sharded). Celý pipeline pod 15 minut.

Beta distribuce

TestFlight (iOS)

Apple’s official beta testing platform:

  • Internal testing: build dostupný okamžitě pro tým (až 100 testerů)
  • External testing: App Store Connect review (typicky <24h), až 10 000 testerů
  • Automatic build upload po merge do develop
  • Feedback přímo v aplikaci — screenshot + anotace + device info

Firebase App Distribution (Android + iOS)

  • Distribuce mimo Store — přímý download přes link nebo QR kód
  • Tester groups — QA, stakeholders, beta users
  • Release notes per build
  • SDK pro in-app feedback

In-app feedback

Tester potřásne telefonem (shake gesture) → otevře se feedback formulář:

  • Screenshot s možností anotace (šipky, obdélníky, text)
  • Automaticky přiložené: device info, OS verze, app verze, network stav, logs
  • Odeslání do Jira/Linear/GitHub Issues
  • Výrazně rychlejší feedback loop než „pošli mi screenshot přes email”

OTA updates (CodePush)

Kdy OTA

Pro React Native a Flutter aplikace: JavaScript/Dart bundle update bez Store review. Hotfix v produkci za minuty, ne dny.

Co OTA může: UI změny, business logika v JS/Dart, content updates, bug fixy v managed kódu.

Co OTA nemůže: Nativní kód (Swift/Kotlin moduly), nové native dependencies, native SDK updates.

Staged rollout

Nikdy nerolloutneme OTA update na 100% uživatelů naráz:

  1. Canary (1-5%) — minimální skupina, monitoring crash rate a error rate
  2. Early adopters (10-20%) — širší validace, business metriky
  3. General availability (100%) — po potvrzení stability

Automatic rollback: pokud crash rate vzroste o >X% oproti baseline, OTA update se automaticky stáhne a uživatelé dostanou předchozí verzi.

Store staged rollout

  • Google Play: Procentuální rollout (0.1% → 1% → 5% → 20% → 50% → 100%). Monitoring crash-free rate v Google Play Console. Halt and rollback kdykoliv.
  • iOS Phased Release: 7-denní postupný rollout (1% → 2% → 5% → 10% → 20% → 50% → 100%). Halt kdykoliv. Immediate release pro kritické updates.

Post-release monitoring

Release nekončí uploadem do Store. Monitoring po release je kritický:

Crash reporting

  • Crashlytics (Firebase): Real-time crash reporting s stack traces, device info, breadcrumbs. Automatické grouping podobných crashů. Alerting při spike.
  • Sentry: Detailnější error tracking s custom context. Performance monitoring (transaction tracing). Release health dashboard.

Performance monitoring

  • Startup time: Cold start, warm start. Trend across verzí.
  • Frame rendering: Frozen frames, slow frames. Detekce jank.
  • Network: API latence, error rate, payload size per endpoint.
  • Battery a memory: Excessive battery drain, memory leaks, disk usage.

Forced update

Pro kritické security patche — aplikace zobrazí dialog: „Aktualizujte na nejnovější verzi.” Konfigurovatelné: soft update (dismiss možný) vs. hard update (blokuje použití). Minimum version check při každém app startu.

Technologický stack

CI/CD: Fastlane, GitHub Actions, Bitrise, Xcode Cloud, Gradle.

Distribution: TestFlight, Firebase App Distribution, Google Play Console, App Store Connect.

OTA: CodePush (App Center), Expo Updates, Shorebird (Flutter).

Monitoring: Crashlytics, Sentry, Firebase Performance, Google Play Vitals, App Store Connect Analytics.

Signing: Fastlane Match, Android Keystore, Google Play App Signing.

Časté otázky

Přes CodePush/OTA: minuty. Přes Store: hodiny (Android), hodiny až dny (iOS review). Pro kritické bugy máme OTA cestu, pro native changes Store cestu s expedited review.

CodePush umožňuje aktualizovat JavaScript bundle React Native aplikace bez Store review. Ideální pro hotfixy, content changes, UI tweaky. Nelze použít pro nativní kód — to vyžaduje Store update.

Fastlane Match pro iOS — sdílené certifikáty a provisioning profiles v šifrovaném Git repu. Keystore management pro Android. Žádné 'nemůžu buildovat, nemám certifikát'.

Ano. Google Play staged rollout (1% → 10% → 50% → 100%) s automatickou evaluací crash rate. iOS phased release (7 dní). Rollback kdykoliv před 100%.

Máte projekt?

Pojďme si o něm promluvit.

Domluvit schůzku