При разработке мобильного приложения на 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 уже сегодня.







