При разработке мобильного приложения на SwiftUI с интеграцией Firebase и push-уведомлениями ручная сборка каждой версии для iOS и Android отнимает до 4 часов в день. Через две недели после старта проекта команда тратит 30% времени на повторяющиеся операции: подпись кода, конфигурацию окружения, загрузку в TestFlight. Мы настраиваем CI/CD в Microsoft AppCenter, чтобы каждая сборка проходила автоматически: по пушу в Git, с прогоном UI-тестов на реальных устройствах и отправкой билда тестировщикам. Весь процесс занимает 2–5 дней, а не недели. За это время вы получаете надёжный конвейер, который сокращает время релиза на 70% и снижает затраты на инфраструктуру тестирования до 50%.
Почему AppCenter — удобный выбор для CI/CD?
AppCenter решает три ключевые задачи: сборка, тестирование на реальных устройствах (Device Farm) и дистрибуция. В отличие от Jenkins или GitLab CI, вам не нужно управлять инфраструктурой — сервис предоставляет виртуальные машины macOS и Windows, а также устройства iOS/Android. Согласно документации Microsoft, AppCenter поддерживает все популярные фреймворки: SwiftUI, Jetpack Compose, Flutter и React Native. Единственное ограничение — сложные матричные сборки и кастомные образы, но мы решаем это комбинацией с внешним CI (например, GitHub Actions).
Как настроить сборку через YAML-конфигурацию?
AppCenter поддерживает appcenter.yml — это наиболее гибкий способ описать пайплайн. Пример для iOS-приложения с ручной подписью:
trigger: branches: include: - main - release/* pool: vmImage: macos-latest steps: - task: InstallAppleCertificate@2 inputs: certSecureFile: distribution.p12 certPwd: $(P12_PASSWORD) - task: InstallAppleProvisioningProfile@1 inputs: provisioningProfileLocation: secureFiles provProfileSecureFile: MyApp_AppStore.mobileprovision - script: | cd ios && pod install --repo-update displayName: 'Install CocoaPods' - task: Xcode@5 inputs: actions: 'build' scheme: 'MyApp' xcWorkspacePath: 'ios/MyApp.xcworkspace' exportPath: '$(Build.ArtifactStagingDirectory)' exportOptions: 'plist' exportOptionsPlist: 'ios/ExportOptions.plist' signingOption: 'manual' signingIdentity: '$(APPLE_CERTIFICATE_SIGNING_IDENTITY)' provisioningProfileUuid: '$(APPLE_PROV_PROFILE_UUID)' Если YAML недоступен, используем appcenter-post-build.sh — он вызывается после успешной сборки. Например, для отправки билда в группу QA:
#!/usr/bin/env bash appcenter distribute release \ --app "$APPCENTER_APP_ID" \ --file "$APPCENTER_OUTPUT_DIRECTORY/MyApp.ipa" \ --group "QA Team" \ --release-notes "Build $APPCENTER_BUILD_ID" curl -X POST "$SLACK_WEBHOOK_URL" \ -H 'Content-type: application/json' \ --data "{\"text\":\"New build $APPCENTER_BUILD_ID is available\"}" Переменные APPCENTER_* — встроенные окружения, доступные на этапе сборки.
Как защитить секреты и управлять окружением?
В Build Configuration → Environment Variables добавляются ключи. Sensitive значения помечаются как «Secret» — они шифруются и не выводятся в логи. Стандартный набор:
| Переменная | Назначение |
|---|---|
P12_PASSWORD |
Пароль к iOS-сертификату |
KEYSTORE_PASSWORD |
Пароль к Android keystore |
FIREBASE_APP_ID |
ID приложения в Firebase |
SLACK_WEBHOOK_URL |
URL для уведомлений в Slack |
AppCenter гарантирует, что секреты не попадут в логи сборки.
Как тестировать на реальных устройствах?
Device Farm запускает XCUITest и Espresso на физических iPhone и Android-смартфонах. Команда загрузки тестов:
appcenter test run xcuitest \ --app "MyOrg/MyApp-iOS" \ --devices "MyOrg/top-ios-devices" \ --test-series "main" \ --locale "ru_RU" \ --build-dir DerivedData/Build/Products/Debug-iphoneos Устройства выбираются в UI — можно задать приоритетные модели и версии ОС. Это быстрее, чем настраивать собственный ферм: экономия до 30% бюджета на тестирование.
| Платформа | Доступные устройства | Ограничения |
|---|---|---|
| iOS | iPhone 12-14, iPad Pro | Максимум 30 мин на тест |
| Android | Samsung Galaxy S21-S24, Pixel 5-7 | До 5 устройств в параллель |
Какие проблемы решает настройка AppCenter?
Первая проблема — ручная подпись кода для iOS. Каждый релиз требует обновления provisioning profiles и сертификатов. Мы автоматизируем этот процесс через InstallAppleCertificate и InstallAppleProvisioningProfile, что исключает ошибки при сборке.
Вторая проблема — отсутствие тестов на реальных устройствах. Симулятор не всегда воспроизводит баги, связанные с памятью или сетью. Device Farm запускает тесты на 5+ физических девайсах, что увеличивает покрытие на 40%.
Третья проблема — задержки в дистрибуции. Ручная отправка билда тестировщикам через TestFlight занимает до часа. Post-build скрипт отправляет IPA/APK напрямую в группы AppCenter, уведомляя команду в Slack за минуту.
Структура проекта в AppCenter
Для каждого приложения создаётся отдельная «app» внутри организации. Типичная иерархия:
MyCompany (Organization) ├── MyApp-iOS (App) │ ├── Build (CI) │ ├── Test (Device Farm) │ ├── Distribute │ └── Diagnostics (Crashes) └── MyApp-Android (App) ├── Build (CI) ├── Distribute └── Diagnostics Такая структура упрощает управление доступами — тестировщики видят только свои приложения.
Ограничения AppCenter CI и как их обойти
AppCenter не поддерживает матричные сборки (несколько конфигураций в одной работе) и кастомные Docker-образы для Android. В таких случаях мы оставляем в AppCenter только дистрибуцию и крашлитику, а сложный пайплайн реализуем через GitHub Actions. Вы получаете лучший из обоих миров: гибкость внешнего CI и удобство AppCenter для доставки тестировщикам.
Что входит в настройку CI/CD?
По завершении работ вы получаете:
- Рабочий пайплайн в AppCenter с триггерами на main/release ветки
- Настроенную подпись для iOS (сертификаты и provisioning profiles)
- UI-тесты на Device Farm (до 5 устройств каждой платформы)
- Автоматическую дистрибуцию в группы тестировщиков (TestFlight/Google Play по запросу)
- Документацию по процессу и контакты поддержки
Сроки и стоимость
Ориентировочный срок — от 2 до 5 дней в зависимости от сложности проекта. Стоимость рассчитывается индивидуально после оценки. Наша команда имеет 5+ лет опыта в мобильной разработке и реализовала CI/CD для 20+ проектов. Закажите настройку — свяжитесь с нами для получения консультации и оценки вашего проекта. Получите консультацию по настройке CI/CD уже сегодня.







