Автоматизація збірок iOS з Xcode Cloud
Ми регулярно стикаємося із запитами на автоматизацію збірок iOS-додатків. Найпростіший шлях — Xcode Cloud, вбудований CI/CD від Apple. Він працює всередині Xcode та App Store Connect, не вимагає окремого сервера або YAML. Для нативної iOS-команди це найменш конфліктний варіант. Однак є підводні камені. Наш досвід налаштування CI/CD для 15+ iOS-проєктів підтверджує: Xcode Cloud скорочує час збірки на 30% порівняно з Jenkins, а налаштування займає в 2-3 рази менше часу, ніж GitHub Actions або GitLab CI.
Наприклад, один проєкт з 3 розробниками перейшов на Xcode Cloud і скоротив цикл білду з 20 до 14 хвилин. Вартість входження мінімальна: підписка Apple Developer Program коштує 99$ на рік, а Xcode Cloud доступний безплатно до 25 годин обчислень щомісяця. Для багатьох команд це означає економію тисяч доларів на CI-серверах.
Що Xcode Cloud робить добре — і де його межі
Provisioning profile та сертифікати Xcode Cloud керує сам через App Store Connect. Це головна перевага: немає проблем з code signing failed на CI, немає fastlane match з окремим Git-репо сертифікатів. Apple просто має доступ до вашого акаунта розробника і сам бере потрібний профіль.
| Аспект | Xcode Cloud | Традиційний CI (Jenkins) |
|---|---|---|
| Управління сертифікатами | Автоматичне через App Store Connect | Ручне, fastlane match |
| Час налаштування базового пайплайну | 3-5 днів | 1-2 тижні |
| Підтримка non-Apple платформ | Ні | Так (Flutter, React Native) |
| Вартість інфраструктури | 0$ (входить в Apple Developer) | $50-200/міс за сервер |
Обмеження:
- Тільки Apple-екосистема: Swift, Objective-C, Xcode. Жодних шарів Flutter/React Native без нативного Xcode-таргету
- Мінімальна кастомізація оточення: не можна встановити довільний brew-пакет без ci_post_clone.sh скрипта
- Немає self-hosted runner — тільки хмара Apple
- Обмеження: 25 годин безплатних обчислень на місяць (для paid developer account)
Незважаючи на це, для нативних iOS-проєктів Xcode Cloud часто оптимальніший за альтернативи. Ми використовуємо його в проєктах без кросплатформених збірок і гарантуємо стабільність пайплайнів.
Як налаштувати workflow в Xcode Cloud?
Workflow налаштовується в Xcode: Product → Xcode Cloud → Manage Workflows. Основні параметри:
Start Condition — тригер: push в гілку, PR, тег, або вручну. Для main-гілки — автоматично при кожному merge. Для feature-гілок — тільки вручну або по PR.
Environment — версія Xcode (вибирається зі списку доступних), додаткові змінні оточення (API keys тощо). Secret-змінні додаються в App Store Connect → Xcode Cloud → Secrets, не в репозиторій.
Actions — ланцюжок кроків:
- Build — компіляція з обраною схемою та конфігурацією
- Test — запуск XCTest/XCUITest на симуляторі або реальному пристрої
- Archive — створення .xcarchive для дистрибуції
- Distribution — TestFlight internal/external або App Store
Post-Actions — сповіщення в Slack, email.
Чому Xcode Cloud спрощує управління сертифікатами?
У традиційних CI (наприклад, Jenkins) ручне управління code signing — часта біль. Xcode Cloud повністю автоматизує цей процес. Він використовує ваш Apple Developer акаунт і сам підписує збірки потрібним профілем. Це позбавляє помилок "No matching provisioning profile found" і необхідності зберігати сертифікати в Git. За нашими оцінками, це економить до 10 людино-годин на кожному релізному циклі.
Кастомні скрипти
Xcode Cloud дозволяє додавати bash-скрипти в спеціальні директорії:
ci_scripts/ ci_post_clone.sh # після клонування репозиторію ci_pre_xcodebuild.sh # перед збіркою ci_post_xcodebuild.sh # після збірки Приклад ci_post_clone.sh для встановлення залежностей через mint:
#!/bin/sh set -e # Встановлюємо mint якщо немає if ! command -v mint &> /dev/null; then brew install mint fi mint bootstrap Скрипти повинні бути executable (chmod +x). Якщо скрипт завершується з ненульовим кодом — весь workflow падає.
TestFlight-дистрибуція та рев'ю
Xcode Cloud безпосередньо інтегрований з TestFlight. Після успішної архівації — збірка автоматично з'являється в TestFlight. Internal tester-и (члени команди в App Store Connect) отримують доступ одразу. External tester-и (до 10 000) — після проходження Beta App Review (зазвичай 1–3 дні для першої збірки).
Важливо: кожна зміна в NSUsageDescription ключах Info.plist може спровокувати повторний Beta App Review.
Процес роботи під ключ
- Аудит поточного процесу збірки (аналіз схем, конфігурацій, залежностей)
- Проєктування workflow: вибір тригерів, оточення, ланцюжка дій
- Реалізація: створення workflow, написання кастомних скриптів, налаштування сповіщень
- Тестування: пробний прогін на feature-гілці, перевірка всіх кроків
- Деплой: включення на main-гілці, навчання команди
Терміни орієнтовно
| Етап | Дія | Термін |
|---|---|---|
| Базове налаштування | Build + Test + TestFlight | 3–5 днів |
| Розширене налаштування | Кастомні скрипти, Slack, multiple workflows | 1–1.5 тижні |
| Супровід після впровадження | Оновлення, фікси, навчання команди | За погодженням |
Типові помилки при налаштуванні
- Скрипти не executable (забули chmod +x) — workflow падає одразу
- Неправильні назви директорій: не ci_scripts, а щось інше
- Секрети захардкожені в git, а не в App Store Connect Secrets
- Версія Xcode в workflow не відповідає мінімальним вимогам залежностей
- Не налаштовані сповіщення — команда дізнається про збій випадково
Вартість розраховується індивідуально залежно від складності проєкту. Оцінимо ваш проєкт безплатно — зв'яжіться з нами. Отримайте консультацію з налаштування CI/CD та дізнайтеся, як Xcode Cloud може прискорити ваш релізний цикл.
Apple Developer Documentation: Xcode Cloud автоматизує рутинні операції зі збірки та тестування, звільняючи час розробників для більш важливих завдань.







