"Kiekvieną penktadienį sėdėdavau iki vėlyvo vakaro, rankiniu būdu buildinant ir uploadinant aplikacijas į App Store ir Google Play." Taip prieš trejus metus atrodė mano release procesas. Dabar? Push į main branch ir po 30 minučių aplikacija jau review eilėje.
CI/CD mobilioms aplikacijoms pakeitė mano darbo būdą. Nebe "deploy day" stresas, o nuolatinis, patikimas procesas. Šiame straipsnyje pasidalinsiu tuo, ką išmokau per dešimtis projektų.
Kodėl CI/CD Mobilioms Aplikacijoms?
Mobilių aplikacijų release procesas yra sudėtingas:
- Dvi platformos - iOS ir Android su skirtingais build procesais
- Code signing - sertifikatai, provisioning profiles, keystores
- Store reikalavimai - screenshots, metadata, privacy policies
- Testavimas - unit, integration, UI testai
Rankinis procesas užima 2-4 valandas per release. Su CI/CD - 0 valandų rankinio darbo.
Mano Rezultatai
Po CI/CD įdiegimo vienam projektui:
- Release laikas: 4h → 30min (automatiškai)
- Release dažnumas: kas 2 savaites → kas dieną
- Bug'ai produkcijoje: -60%
- Kūrėjų laimės indeksas: +100% (nebereikia penktadienių OT)
CI/CD Įrankių Palyginimas
| Įrankis | Kaina | iOS | Android | Flutter |
|---|---|---|---|---|
| Codemagic | 500 min/mėn nemokama | Puiku | Puiku | Specializuota |
| GitHub Actions | 2000 min/mėn nemokama | Gerai | Puiku | Gerai |
| Bitrise | Nuo $90/mėn | Puiku | Puiku | Gerai |
| CircleCI | Nuo $30/mėn | Gerai | Puiku | Gerai |
Mano rekomendacija: Flutter projektams - Codemagic. Native projektams - GitHub Actions (jei jau naudojate GitHub).
Fastlane: Automatizacijos Pagrindas
Fastlane yra open-source įrankis, kuris automatizuoja mobilių aplikacijų build ir release procesus. Jis veikia su bet kuriuo CI/CD įrankiu.
iOS su Fastlane
Fastfile Pavyzdys (iOS)
lane :beta do
increment_build_number
build_app(scheme: "MyApp")
upload_to_testflight
end
Ši viena komanda:
- Padidina build numerį
- Sukuria .ipa failą
- Uploadina į TestFlight
- Informuoja testerius
Android su Fastlane
Fastfile Pavyzdys (Android)
lane :beta do
gradle(task: "bundleRelease")
upload_to_play_store(
track: "internal",
aab: "app/build/outputs/bundle/release/app-release.aab"
)
end
Code Signing: Didžiausias Iššūkis
Code signing yra ta vieta, kur dauguma žmonių "įstringa". Štai kaip tai išsprendžiau:
iOS Code Signing
Dažniausia Klaida
Sertifikatai saugomi lokaliame Mac'e. Kai kitas kūrėjas ar CI serveris bando buildin - "Code signing error".
Sprendimas: Fastlane Match
- Visi sertifikatai ir profiles saugomi Git repo (užšifruoti)
- Bet kuris kūrėjas ar CI gali juos atsisiųsti
- Vienas šaltinis tiesos - nebėra "pas mane veikia"
Android Code Signing
Android yra paprastesnis - tik keystore failas ir slaptažodžiai. Saugokite juos CI/CD secrets:
- GitHub: Repository secrets
- Codemagic: Environment variables (encrypted)
- NIEKADA necommitinkite keystore į Git!
Testavimo Automatizacija
CI/CD be testų - tik pusė naudos. Štai ką testuoju automatiškai:
1. Unit Testai
Kiekviename PR. Jei failina - PR nemerginamas.
2. Integration Testai
Prieš kiekvieną release į TestFlight/Internal Track.
3. UI Testai
Critical flows: login, checkout, main features. Naudoju:
- iOS: XCUITest
- Android: Espresso
- Flutter: integration_test package
Testavimo Piramidė
70% unit testų (greiti, daug)
20% integration testų (vidutiniai)
10% UI testų (lėti, bet svarbūs)
GitHub Actions Workflow Pavyzdys
Flutter CI/CD su GitHub Actions
name: Build & Deploy
on: push: branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
- run: flutter test
build-ios:
needs: test
runs-on: macos-latest
# ... iOS build steps
Kiek Tai Kainuoja?
| Scenarijus | Mėnesinė kaina | Pastabos |
|---|---|---|
| Solo kūrėjas | 0-50€ | Free tiers pakanka |
| Maža komanda (2-5) | 50-150€ | Codemagic/Bitrise starter |
| Vidutinė komanda (5-15) | 200-500€ | Pro planai su parallelization |
Ką Daryti Šiandien?
Pradėkite Nuo Šių Žingsnių
- Įdiekite Fastlane - net jei dar nenaudosite CI/CD, jis padės lokaliems buildams
- Sukurkite bent vieną lane - pvz.
fastlane betaTestFlight/Internal uploadui - Išspręskite code signing - Match iOS, secrets Android
- Pridėkite testus - bent unit testai prieš kiekvieną PR
- Pasirinkite CI/CD - pradėkite su nemokamu planu
Reikia Pagalbos su CI/CD?
Padedu sukurti ir konfigūruoti CI/CD pipeline'us mobilioms aplikacijoms.
Susisiekti