При розробці мобільного застосунку на SwiftUI з інтеграцією Firebase та push-сповіщеннями ручна збірка кожної версії для iOS та Android забирає до 4 годин на день. Через два тижні після старту проєкту команда витрачає 30% часу на повторювані операції: підпис коду, конфігурацію середовища, завантаження в TestFlight. Ми налаштовуємо CI/CD в Microsoft AppCenter, щоб кожна збірка проходила автоматично: по push у 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 додаються ключі. Чутливі значення позначаються як «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 "uk_UA" \
--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 вже сьогодні.







