CI/CD (Continuous Integration / Continuous Delivery) este practica de a construi, testa și livra automat o aplicație la fiecare modificare de cod. Conform Statista (2025), 80% dintre echipele de dezvoltare mobilă folosesc CI/CD. Acest articol acoperă instrumente CI populare, Fastlane pentru automatizarea build-urilor mobile, precum și Canary Release și Feature Flags.
Puncte cheie
Continuous Integration este fundamentul automatizării CI/CD pentru aplicații mobile. Este o practică în care fiecare dezvoltator își îmbină codul într-un depozit partajat de mai multe ori pe zi. După fiecare push, serverul CI construiește automat proiectul și rulează teste. Dacă testele eșuează, build-ul este considerat stricat și echipa remediază imediat problema. CI previne situația «funcționează pe mașina mea» în care codul unui dezvoltator strică codul altuia.
Build Pipeline — o secvență de pași executați la fiecare push: linting cod → teste unitare → build debug APK/IPA → teste de integrare → build release. Fiecare pas se execută numai după succesul celui anterior. Artefactele de build — APK, IPA, AAB, rapoarte de testare — sunt salvate și disponibile pentru descărcare.
Continuous Delivery — codul este construit și testat automat, dar o persoană decide dacă să lanseze în producție. Continuous Deployment — fiecare build reușit este lansat automat în producție. Pentru aplicațiile mobile, CD (livrarea către magazine) prin TestFlight sau Internal Testing este mai comun, deoarece decizia finală de publicare este luată de dezvoltator sau manager. Staging — mediu cât mai aproape de producție, folosit pentru testarea build-ului înainte de lansare.
GitHub Actions este un sistem CI/CD încorporat pentru automatizarea aplicațiilor mobile pe GitHub. Actions utilizează configurația YAML (.github/workflows) pentru a defini pipeline-uri. Acțiuni gata făcute sunt disponibile pentru dezvoltarea mobilă: actions/setup-java, gradle-build-action pentru Android, xcodebuild-action pentru iOS. GitHub Actions oferă 2000 de minute gratuite pe lună pentru depozite private.
Exemplu: un workflow Android include checkout cod, configurare JDK 17, cache dependențe Gradle, rulare lint și teste unitare, build APK și încărcare artefact. Pentru iOS — checkout, configurare Xcode, pod install, rulare XCTest, arhivare și export IPA. GitHub Actions se integrează cu GitHub Releases, Slack și Telegram pentru notificări.
GitLab CI este un sistem CI/CD încorporat în GitLab, configurat prin .gitlab-ci.yml. GitLab CI folosește runneri — agenți care execută joburi. Pentru dezvoltarea mobilă puteți folosi runneri partajați (Linux pentru Android) sau proprii runneri (macOS pentru iOS). GitLab CI suportă joburi paralele, artefacte, medii și aprobare manuală pentru lansările de producție.
Bitrise este o platformă CI/CD specializată în automatizarea aplicațiilor mobile. Bitrise oferă Steps gata făcute pentru Android, iOS, Flutter și React Native: Gradle Runner, Xcode Archive, Flutter Test, CocoaPods Install. Bitrise configurează automat semnarea codului pentru iOS (prin Codesigndoc) și oferă mașini virtuale cu Xcode, Android SDK, Flutter și alte instrumente preinstalate.
Avantaje Bitrise: configurare simplă prin editorul vizual Workflow, suport pentru build-uri paralele, integrare cu Firebase Test Lab, App Store Connect și Google Play Console. Bitrise oferă 90 de minute gratuite pe lună pentru proiecte personale. La IT Sectr folosim Bitrise pentru toate proiectele mobile — simplifică semnificativ CI/CD comparativ cu configurarea manuală a GitHub Actions.
| Criteriu | GitHub Actions | GitLab CI | Bitrise | CircleCI |
|---|---|---|---|---|
| Specializare | Generală | Generală | Mobilă | Generală |
| macOS pentru iOS | Da (macOS runner) | Runner propriu | Da (încorporat) | Da (macOS) |
| Limită gratuită | 2000 min/lună | 400 min/lună | 90 min/lună | 6000 min/lună |
| Integrare Fastlane | Prin run script | Prin run script | Step gata | Prin run script |
| Code Signing | Configurare manuală | Configurare manuală | Automată | Prin Fastlane |
| Build-uri paralele | Da | Da | Da | Da |
Fastlane este un instrument de automatizare a aplicațiilor mobile pentru iOS și Android, scris în Ruby. Fastlane constă dintr-un sistem de acțiuni gata făcute (peste 200) și un DSL pentru descrierea scenariilor prin Fastfile. Fastlane rezolvă sarcinile pe care fiecare dezvoltator mobil le face manual: semnare cod, generare capturi ecran, încărcare în TestFlight și Google Play, gestionare certificate și profiluri de provisioning.
Lane — un scenariu denumit în Fastfile. Exemplu: lane :release do — un lanț de acțiuni pentru lansarea unei versiuni. Match — un instrument pentru stocarea și sincronizarea sigură a certificatelor și profilurilor de provisioning printr-un depozit Git criptat. Gym — construirea și arhivarea aplicațiilor iOS (un wrapper peste xcodebuild). Pilot — încărcarea și gestionarea build-urilor în TestFlight. Deliver — încărcarea aplicației și metadatelor în App Store Connect. Snapshot — generare automată de capturi ecran în toate limbile. Screengrab — generare automată de capturi ecran pentru Android.
Exemplu Fastfile pentru Android: lane :beta apelează gradle (assembleRelease), apoi firebase_app_distribution pentru distribuirea către testeri. Pentru iOS: lane :beta apelează match (descărcare certificate), gym (arhivare) și pilot (încărcare în TestFlight). Fastlane poate rula local și pe un server CI — făcându-l un instrument universal în orice proiect mobil.
Canary Release este o strategie de automatizare CI/CD pentru lansarea unei noi versiuni a aplicației către un procent mic de utilizatori (1–5%) înainte de lansarea completă. În Google Play Console, aceasta este implementată prin Staged Rollout: publicați o actualizare pentru 5% din audiență, monitorizați crash-urile și metricile și măriți procentul dacă nu apar probleme. În App Store Connect — prin Phased Release for Automatic Updates.
A/B Testing — compararea a două versiuni ale unei funcționalități pe grupuri aleatoare de utilizatori. În dezvoltarea mobilă, testele A/B sunt efectuate prin Feature Flags, Firebase Remote Config sau logică server. Canary Release și testele A/B minimizează riscurile la lansarea noilor funcționalități.
Feature Flag (Feature Toggle) — activarea condiționată a funcționalității fără a implementa cod nou. Un Feature Flag este o verificare în cod: if (featureFlag.isEnabled()) { /* cod nou */ } else { /* cod vechi */ }. Flag-urile sunt gestionate prin servicii: LaunchDarkly, Split.io, Firebase Remote Config. Feature Flags permit dezvoltatorilor să îmbine codul în main chiar dacă funcționalitatea nu este încă pregătită pentru utilizatori.
LaunchDarkly — cea mai populară platformă de gestionare a Feature Flags. LaunchDarkly oferă SDK-uri pentru iOS, Android, Flutter și React Native. Puteți activa funcționalități pentru utilizatori specifici, segmente, regiuni sau un procent din audiență. Feature Flags sunt, de asemenea, folosite ca kill switch — dezactivarea instantanee a unei funcționalități problematice fără a lansa o nouă versiune a aplicației.
Întrebări frecvente
Începeți cu GitHub Actions — dacă codul dvs. este pe GitHub. Actions este gratuit pentru depozite publice, are suport încorporat pentru Android și iOS (macOS runner) și un ecosistem imens de acțiuni gata făcute. Pentru specializare mobilă — Bitrise.
Nu, serviciile CI (GitHub Actions, Bitrise, CircleCI) oferă macOS runner. Plătiți pentru minutele de utilizare. Pentru depanarea locală a Fastlane aveți nevoie de un Mac, dar CI poate funcționa în cloud.
Canary Release — lansarea unei noi versiuni către un subset de utilizatori pentru verificarea stabilității. Testarea A/B — compararea a două variante ale unei funcționalități pentru alegerea celei mai bune. Canary este despre fiabilitate, A/B despre conversie.
Fastlane nu este obligatoriu, dar foarte recomandat. Fără Fastlane, ar trebui să rulați manual xcodebuild, să gestionați certificatele și să încărcați build-urile printr-o interfață web. Fastlane automatizează toate aceste sarcini cu o singură comandă.
Match este un instrument Fastlane pentru gestionarea certificatelor Code Signing iOS. Match stochează certificatele și profilurile de provisioning într-un depozit Git criptat și le sincronizează între toți dezvoltatorii și serverul CI.
Rezumat
Vom dezvolta o aplicație mobilă la cheie
IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.