Рубрики
Flutter

CI/CD для Flutter с Codemagic: Полное руководство

Настройка автоматической сборки, тестирования и публикации Flutter приложений с помощью Codemagic CI/CD.

CI/CD (Continuous Integration/Continuous Delivery) автоматизирует процесс сборки, тестирования и публикации Flutter приложений. Codemagic — это специализированный CI/CD сервис для Flutter. В этом руководстве разберём полную настройку.

Что такое Codemagic?

Codemagic — это cloud-based CI/CD платформа, созданная специально для Flutter и React Native.

Преимущества: — Специализируется на Flutter — Простая настройка за 5 минут — Бесплатный план для Open Source — Test distribution — Code signing из коробки — Fastlane integration

Начало работы

Регистрация

  1. Зарегистрируйтесь на codemagic.io
  2. Подключите GitHub/GitLab/Bitbucket репозиторий
  3. Выберите Flutter проект

Первая сборка

Codemagic автоматически определит Flutter проект и предложит конфигурацию:

workflows:
  sample-workflow:
    name: Codemagic Sample
    triggering:
      events:
        - push
      branch_patterns:
        - pattern: main
          include: false
    environment:
      vars:
        XCODE_WORKSPACE: codemagicFlutter.xcworkspace
        XCODE_SCHEME: codemagicFlutter
      flutter: stable
    scripts:
      - name: Build Android app
        script: flutter build apk --release
    artifacts:
      - build/app/outputs/flutter-apk/*.apk

Настройка тестов

Unit тесты

scripts:
  - name: Run Flutter tests
    script: flutter test

Integration тесты

scripts:
  - name: Run integration tests
    script: flutter test integration_test --no-sound-null-safety

Code coverage

scripts:
  - name: Generate coverage
    script: flutter test --coverage
  - name: Upload coverage
    script: bash <(curl -s https://codecov.io/bash)

Code Signing

Android

scripts:
  - name: Set up key properties
    script: |
      echo $CM_KEYSTORE_PROPERTIES | base64 --decode > keystore.properties
  - name: Build release APK
    script: |
      flutter build apk --release \
        --keystore $CM_KEYSTORE \
        --store-password $CM_KEYSTORE_PASSWORD \
        --key-password $CM_KEY_PASSWORD \
        --key-alias $CM_KEY_ALIAS

iOS

scripts:
  - name: Set up code signing
    script: |
      keychain initialize
      keychain set-defaults
    - name: Fetch signing certificates
    script: |
      app-store-connect fetch-signing-files \
        $CM_BUNDLE_ID \
        --platform IOS \
        --type IOS_APP_DEVELOPMENT \
        --certificate-key $CM_CERTIFICATE_PRIVATE_KEY \
        --certificate-issuer $CM_CERTIFICATE_ISSUER
    - name: Build IPA
    script: flutter build ipa --release --export-options-plist exportOptions.plist

Публикация в сторы

Google Play

scripts:
  - name: Upload to Google Play
    script: |
      cd android
      fastlane supply \
        --apk build/app/outputs/flutter-apk/app-release.apk \
        --track internal \
        --json_key_data $CM_SERVICE_ACCOUNT_JSON

App Store

scripts:
  - name: Upload to TestFlight
    script: |
      app-store-connect publish \
        --path build/ios/ipa/*.ipa \
        --skip_screenshots \
        --skip_waiting_for_build_processing

Заключение

Codemagic — отличный выбор для CI/CD Flutter приложений. Начните с простого workflow и усложняйте по мере необходимости.