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
Начало работы
Регистрация
- Зарегистрируйтесь на codemagic.io
- Подключите GitHub/GitLab/Bitbucket репозиторий
- Выберите 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 и усложняйте по мере необходимости.