DevOps ir CI/CD Mobilioms Aplikacijoms: Automatizacijos Vadovas

"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:

  1. Padidina build numerį
  2. Sukuria .ipa failą
  3. Uploadina į TestFlight
  4. 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ų

  1. Įdiekite Fastlane - net jei dar nenaudosite CI/CD, jis padės lokaliems buildams
  2. Sukurkite bent vieną lane - pvz. fastlane beta TestFlight/Internal uploadui
  3. Išspręskite code signing - Match iOS, secrets Android
  4. Pridėkite testus - bent unit testai prieš kiekvieną PR
  5. 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