CI/CD (Continuous Integration / Continuous Delivery) to praktyka automatycznego budowania, testowania i dostarczania aplikacji przy każdej zmianie kodu. Według Statista (2025), 80% zespołów tworzących aplikacje mobilne używa CI/CD. Ten artykuł omawia popularne narzędzia CI, Fastlane do automatyzacji mobilnych kompilacji, a także Canary Release i Feature Flags.
Najważniejsze informacje
Continuous Integration to podstawa automatyzacji CI/CD dla aplikacji mobilnych. Jest to praktyka, w której każdy programista scala swój kod do współnego repozytorium kilka razy dziennie. Po każdym pushu serwer CI automatycznie buduje projekt i uruchamia testy. Jeśli testy zawodzą, kompilacja jest uznawana za zepsutą, a zespół natychmiast naprawia problem. CI zapobiega sytuacji «u mnie działa», gdy kod jednego programisty psuje kod innego.
Build Pipeline — sekwencja kroków wykonywanych przy każdym pushu: lintowanie kodu → testy jednostkowe → kompilacja debug APK/IPA → testy integracyjne → kompilacja release. Każdy krok jest uruchamiany dopiero po pomyślnym zakończeniu poprzedniego. Artefakty kompilacji — APK, IPA, AAB, raporty testowe — są zapisywane i dostępne do pobrania.
Continuous Delivery — kod jest automatycznie budowany i testowany, ale decyzję o wydaniu do produkcji podejmuje człowiek. Continuous Deployment — każda udana kompilacja jest automatycznie wydawana do produkcji. W przypadku aplikacji mobilnych częściej stosuje się CD (dostarczanie do sklepów) przez TestFlight lub Internal Testing, ponieważ ostateczną decyzję o publikacji podejmuje programista lub menedżer. Staging — środowisko jak najbardziej zbliżone do produkcyjnego, używane do testowania kompilacji przed wydaniem.
GitHub Actions to wbudowany system CI/CD do automatyzacji aplikacji mobilnych w GitHub. Actions używa konfiguracji YAML (.github/workflows) do definiowania pipeline'ów. Gotowe actions są dostępne do tworzenia aplikacji mobilnych: actions/setup-java, gradle-build-action dla Androida, xcodebuild-action dla iOS. GitHub Actions zapewnia 2000 bezpłatnych minut miesięcznie dla prywatnych repozytoriów.
Przykład: workflow dla Androida obejmuje pobranie kodu, instalację JDK 17, cachowanie zależności Gradle, uruchomienie lint i testów jednostkowych, kompilację APK i przesłanie artefaktu. Dla iOS — pobranie kodu, instalację Xcode, pod install, uruchomienie XCTest, archiwizację i eksport IPA. GitHub Actions integruje się z GitHub Releases, Slack i Telegram do powiadomień.
GitLab CI to wbudowany system CI/CD w GitLab, konfigurowany przez .gitlab-ci.yml. GitLab CI używa runnerów — agentów wykonujących zadania. Do tworzenia aplikacji mobilnych można używać współdzielonych runnerów (Linux dla Androida) lub własnych runnerów (macOS dla iOS). GitLab CI obsługuje zadania równoległe, artefakty, środowiska i ręczne zatwierdzanie dla wydań produkcyjnych.
Bitrise to platforma CI/CD specjalizująca się w automatyzacji aplikacji mobilnych. Bitrise oferuje gotowe Steps dla Androida, iOS, Flutter i React Native: Gradle Runner, Xcode Archive, Flutter Test, CocoaPods Install. Bitrise automatycznie konfiguruje podpisywanie kodu dla iOS (przez Codesigndoc) i zapewnia maszyny wirtualne z preinstalowanym Xcode, Android SDK, Flutter i innymi narzędziami.
Zalety Bitrise: łatwa konfiguracja przez wizualny edytor Workflow, obsługa równoległych kompilacji, integracja z Firebase Test Lab, App Store Connect i Google Play Console. Bitrise oferuje 90 bezpłatnych minut miesięcznie dla projektów osobistych. W IT Sectr używamy Bitrise do wszystkich projektów mobilnych — znacznie upraszcza CI/CD w porównaniu z ręczną konfiguracją GitHub Actions.
| Kryterium | GitHub Actions | GitLab CI | Bitrise | CircleCI |
|---|---|---|---|---|
| Specjalizacja | Ogólna | Ogólna | Mobilna | Ogólna |
| macOS dla iOS | Tak (macOS runner) | Własny runner | Tak (wbudowany) | Tak (macOS) |
| Bezpłatny limit | 2000 min/mies | 400 min/mies | 90 min/mies | 6000 min/mies |
| Integracja Fastlane | Przez run script | Przez run script | Gotowy Step | Przez run script |
| Code Signing | Ręczna konfiguracja | Ręczna konfiguracja | Automatyczna | Przez Fastlane |
| Równoległe kompilacje | Tak | Tak | Tak | Tak |
Fastlane to narzędzie do automatyzacji aplikacji mobilnych dla iOS i Android, napisane w Ruby. Fastlane składa się z systemu gotowych akcji (ponad 200) i DSL do opisywania scenariuszy przez Fastfile. Fastlane rozwiązuje zadania, które każdy programista mobilny wykonuje ręcznie: podpisywanie kodu, tworzenie zrzutów ekranu, przesyłanie do TestFlight i Google Play, zarządzanie certyfikatami i profilami provisioningu.
Lane — nazwany scenariusz w Fastfile. Przykład: lane :release do — łańcuch działań do wydania wersji. Match — narzędzie do bezpiecznego przechowywania i synchronizacji certyfikatów i profili provisioningu przez zaszyfrowane repozytorium Git. Gym — budowanie i archiwizowanie aplikacji iOS (nakładka na xcodebuild). Pilot — przesyłanie i zarządzanie kompilacjami w TestFlight. Deliver — przesyłanie aplikacji i metadanych do App Store Connect. Snapshot — automatyczne tworzenie zrzutów ekranu we wszystkich językach. Screengrab — automatyczne tworzenie zrzutów ekranu dla Androida.
Przykład Fastfile dla Androida: lane :beta wywołuje gradle (assembleRelease), następnie firebase_app_distribution do dystrybucji testerom. Dla iOS: lane :beta wywołuje match (pobranie certyfikatów), gym (archiwizację) i pilot (przesłanie do TestFlight). Fastlane może być uruchamiany lokalnie i na serwerze CI — co czyni go uniwersalnym narzędziem w każdym projekcie mobilnym.
Canary Release to strategia automatyzacji CI/CD wdrażania nowej wersji aplikacji do małego procenta użytkowników (1–5%) przed pełnym wydaniem. W Google Play Console jest to realizowane przez Staged Rollout: publikujesz aktualizację dla 5% odbiorców, monitorujesz błędy i metryki, a jeśli nie ma problemów, zwiększasz procent. W App Store Connect — przez Phased Release for Automatic Updates.
A/B Testing — porównanie dwóch wersji jednej funkcji na losowych grupach użytkowników. W tworzeniu aplikacji mobilnych testy A/B są przeprowadzane przez Feature Flags, Firebase Remote Config lub logikę serwerową. Canary Release i testy A/B minimalizują ryzyko podczas wdrażania nowych funkcji.
Feature Flag (Feature Toggle) — warunkowe włączanie funkcjonalności bez wdrażania nowego kodu. Feature Flag to sprawdzenie w kodzie: if (featureFlag.isEnabled()) { /* nowy kod */ } else { /* stary kod */ }. Flagi są zarządzane przez usługi: LaunchDarkly, Split.io, Firebase Remote Config. Feature Flags pozwalają programistom scalać kod do main, nawet jeśli funkcja nie jest jeszcze gotowa dla użytkowników.
LaunchDarkly — najpopularniejsza platforma do zarządzania Feature Flags. LaunchDarkly udostępnia SDK dla iOS, Android, Flutter i React Native. Możesz włączać funkcje dla konkretnych użytkowników, segmentów, regionów lub procentu odbiorców. Feature Flags są również używane jako kill switch — natychmiastowe wyłączenie problematycznej funkcji bez wydawania nowej wersji aplikacji.
Najczęściej zadawane pytania
Zacznij od GitHub Actions — jeśli twój kod jest na GitHub. Actions jest darmowy dla publicznych repozytoriów, ma wbudowaną obsługę Androida i iOS (macOS runnery) oraz ogromny ekosystem gotowych akcji. Dla specjalizacji mobilnej — Bitrise.
Nie, usługi CI (GitHub Actions, Bitrise, CircleCI) udostępniają macOS runnery. Płacisz za minuty użytkowania. Do lokalnego debugowania Fastlane potrzebujesz Maca, ale CI może działać w chmurze.
Canary Release — wdrożenie nowej wersji do podzbioru użytkowników w celu sprawdzenia stabilności. Test A/B — porównanie dwóch wariantów jednej funkcji w celu wybrania lepszego. Canary dotyczy niezawodności, A/B dotyczy konwersji.
Fastlane nie jest obowiązkowy, ale bardzo zalecany. Bez Fastlane musiałbyś ręcznie uruchamiać xcodebuild, zarządzać certyfikatami i przesyłać kompilacje przez interfejs webowy. Fastlane automatyzuje te zadania za pomocą jednego polecenia.
Match to narzędzie Fastlane do zarządzania certyfikatami Code Signing iOS. Match przechowuje certyfikaty i profile provisioningu w zaszyfrowanym repozytorium Git i synchronizuje je między wszystkimi programistami a serwerem CI.
Podsumowanie
Opracujemy aplikację mobilną pod klucz
IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.