yaml_contentstringобязательный
Вот пример полного содержимого файла codemagic.yaml для типичного проекта Flutter (или аналогичного мобильного приложения). Это стандартная конфигурация для Codemagic CI/CD.
yaml # codemagic.yaml # Конфигурация для Codemagic CI/CD workflows: # Имя workflow (например, для iOS и Android) default-workflow: name: Default Workflow max_build_duration: 60 environment: groups: - app_store_credentials # Группа секретов (App Store Connect API key и т.д.) - signing_credentials # Группа секретов для подписи (keystore и т.д.) vars: APP_ID: "com.example.myapp" APP_NAME: "My App" # Переменные окружения, которые будут доступны во время сборки # Например, ключи API, URL серверов и т.д. API_URL: "https://api.example.com" flutter: stable # Версия Flutter (stable, beta, master или конкретная версия) xcode: latest # Версия Xcode (для iOS) cocoapods: default scripts: # Шаг 1: Установка зависимостей Flutter - name: Flutter pub get script: flutter pub get # Шаг 2: Анализ кода (опционально) - name: Analyze code script: flutter analyze # Шаг 3: Запуск тестов (опционально) - name: Run tests script: flutter test # Шаг 4: Сборка Android (APK) - name: Build Android APK script: flutter build apk --release # Шаг 5: Сборка Android App Bundle (для Play Store) - name: Build Android App Bundle script: flutter build appbundle --release # Шаг 6: Сборка iOS (без подписи, для тестирования) - name: Build iOS (no codesign) script: flutter build ios --release --no-codesign artifacts: # Артефакты, которые будут доступны для скачивания после сборки - build/app/outputs/flutter-apk/*.apk - build/app/outputs/bundle/release/*.aab - build/ios/iphoneos/*.ipa - /tmp/xcodebuild_logs/*.log - flutter_drive.log publishing: # Публикация артефактов (опционально) email: recipients: - dev@example.com notify: success: true failure: false # Публикация в App Store Connect (для iOS) app_store_connect: auth: integration # Используется интеграция с App Store Connect (созданная в Codemagic) # Или можно использовать API key напрямую: # auth: api_key # api_key: $APP_STORE_CONNECT_API_KEY # key_id: $APP_STORE_CONNECT_KEY_ID # issuer_id: $APP_STORE_CONNECT_ISSUER_ID submit: false # Автоматическая отправка в TestFlight (true/false) # Публикация в Google Play (для Android) google_play: credentials: $GCLOUD_SERVICE_ACCOUNT_CREDENTIALS # JSON-файл сервисного аккаунта track: internal # Трек: internal, alpha, beta, production submit: false # Кэширование (ускоряет сборку) cache: cache_paths: - $HOME/.pub-cache - $HOME/.gradle/caches - $HOME/Library/Caches/CocoaPods
---
### Пояснения к ключевым секциям:
1. workflows — основная секция, определяет все сценарии сборки (можно несколько).
2. environment — настройки окружения:
- groups — ссылки на группы секретов, созданные в Codemagic UI.
- vars — переменные окружения, доступные в скриптах.
- flutter, xcode — версии инструментов.
3. scripts — последовательность команд (шагов) сборки. Каждый шаг имеет имя и команду.
4. artifacts — список файлов, которые будут сохранены и доступны после сборки (APK, AAB, IPA, логи).
5. publishing — настройки публикации (email, App Store Connect, Google Play).
6. cache — пути для кэширования зависимостей (pub-cache, gradle, cocoapods).
---
### Вариант для простого проекта (только Android):
yaml workflows: android-build: name: Android Build environment: flutter: stable scripts: - name: Get dependencies script: flutter pub get - name: Build APK script: flutter build apk --release artifacts: - build/app/outputs/flutter-apk/*.apk
---
### Вариант с несколькими workflow (например, отдельно для iOS и Android):
yaml workflows: android-workflow: name: Android Workflow environment: flutter: stable scripts: - flutter pub get - flutter build apk --release artifacts: - build/app/outputs/flutter-apk/*.apk ios-workflow: name: iOS Workflow environment: flutter: stable xcode: latest scripts: - flutter pub get - flutter build ios --release --no-codesign artifacts: - build/ios/iphoneos/*.ipa
---
Это базовая структура. Реальная конфигурация зависит от вашего проекта (наличие подписи, тестов, публикации и т.д.). Вы можете добавить условия (when:), интеграции с Git-провайдерами, вебхуки и многое другое.