CI/CD (Continuous Integration / Continuous Delivery) — это практика автоматической сборки, тестирования и доставки приложения при каждом изменении кода. По данным Statista (2025), 80% команд мобильной разработки используют CI/CD в своей работе. В этой статье разберём популярные CI-инструменты, Fastlane для автоматизации мобильных сборок, а также Canary Release и Feature Flags.
Главное
Continuous Integration — основа CI/CD автоматизации мобильных приложений. Практика, при которой каждый разработчик несколько раз в день сливает свой код в общий репозиторий. После каждого пуша CI-сервер автоматически собирает проект и запускает тесты. Если тесты падают — сборка считается сломанной, и команда исправляет проблему немедленно. CI предотвращает ситуацию «у меня всё работает», когда код одного разработчика ломает код другого.
Build Pipeline — последовательность шагов, которые выполняются при каждом пуше: линтинг кода → unit-тесты → сборка debug APK/IPA → интеграционные тесты → сборка release. Каждый шаг может запускаться только после успешного прохождения предыдущего. Артефакты сборки — APK, IPA, AAB, отчёты о тестировании — сохраняются и доступны для скачивания.
Continuous Delivery — код автоматически собирается и тестируется, но решение о выкладке в продакшн принимает человек. Continuous Deployment — каждый успешный билд автоматически выкладывается в продакшн. Для мобильных приложений чаще используется CD (доставка в stores) через TestFlight или Internal Testing, так как окончательное решение о публикации принимает разработчик или менеджер. Staging — окружение, максимально приближенное к продакшну, на котором тестируется сборка перед релизом.
GitHub Actions — встроенная CI/CD-система для автоматизации мобильных приложений в GitHub. Actions использует YAML-конфигурацию (.github/workflows) для описания пайплайнов. Для мобильной разработки доступны готовые actions: actions/setup-java, gradle-build-action для Android, xcodebuild-action для iOS. GitHub Actions предоставляет 2000 минут бесплатного времени в месяц для приватных репозиториев.
Пример: workflow для Android включает checkout кода, установку JDK 17, кэширование зависимостей Gradle, запуск lint и unit-тестов, сборку APK и загрузку артефакта. Для iOS — checkout, установка Xcode, pod install, запуск XCTest, архивирование и экспорт IPA. GitHub Actions интегрируется с GitHub Releases, Slack и Telegram для уведомлений.
GitLab CI — встроенная CI/CD-система в GitLab, конфигурируемая через .gitlab-ci.yml. GitLab CI использует runners — агенты, выполняющие задачи. Для мобильной разработки можно использовать shared runners (Linux для Android) или собственные runners (macOS для iOS). GitLab CI поддерживает parallel jobs, artifacts, environments и manual approval для production-релизов.
Bitrise — CI/CD-платформа, специализированная на автоматизации мобильных приложений. Bitrise предлагает готовые шаги (Steps) для Android, iOS, Flutter и React Native: Gradle Runner, Xcode Archive, Flutter Test, CocoaPods Install. Bitrise автоматически настраивает код-подпись для iOS (через Codesigndoc) и предоставляет виртуальные машины с предустановленным Xcode, Android SDK, Flutter и другими инструментами.
Преимущества Bitrise: простая настройка через визуальный редактор Workflow, поддержка параллельных билдов, интеграция с Firebase Test Lab, App Store Connect и Google Play Console. Bitrise предоставляет 90 минут бесплатного времени в месяц для личных проектов. В IT Sectr мы используем Bitrise для всех мобильных проектов — он значительно упрощает CI/CD по сравнению с ручной настройкой GitHub Actions.
| Критерий | GitHub Actions | GitLab CI | Bitrise | CircleCI |
|---|---|---|---|---|
| Специализация | Универсальная | Универсальная | Мобильная | Универсальная |
| macOS для iOS | Да (macOS runner) | Свой runner | Да (встроено) | Да (macOS) |
| Бесплатный лимит | 2000 мин/мес | 400 мин/мес | 90 мин/мес | 6000 мин/мес |
| Fastlane интеграция | Через run script | Через run script | Готовый Step | Через run script |
| Code Signing | Ручная настройка | Ручная настройка | Автоматическая | Через Fastlane |
| Параллельные билды | Да | Да | Да | Да |
Fastlane — инструмент автоматизации мобильных приложений для iOS и Android, написанный на Ruby. Fastlane состоит из системы готовых actions (более 200) и DSL для описания сценариев через Fastfile. Fastlane решает задачи, которые каждый мобильный разработчик выполняет вручную: подпись кода, создание скриншотов, загрузка в TestFlight и Google Play, управление сертификатами и provisioning profiles.
Lane — именованный сценарий в Fastfile. Пример: lane :release do — цепочка действий для выпуска релиза. Match — инструмент для безопасного хранения и синхронизации сертификатов и provisioning profiles через зашифрованный Git-репозиторий. Gym — сборка и архивирование iOS-приложения (обёртка над xcodebuild). Pilot — загрузка и управление сборками в TestFlight. Deliver — загрузка приложения и метаданных в App Store Connect. Snapshot — автоматическое создание скриншотов на всех языках. Screengrab — автоматическое создание скриншотов для Android.
Пример Fastfile для Android: lane :beta вызывает gradle (assembleRelease), затем firebase_app_distribution для распространения тестировщикам. Для iOS: lane :beta вызывает match (загрузка сертификатов), gym (архивирование) и pilot (загрузка в TestFlight). Fastlane может запускаться локально и на CI-сервере — это делает его универсальным инструментом в любом мобильном проекте.
Canary Release — стратегия CI/CD автоматизации выкатки новой версии приложения на небольшую часть пользователей (1–5%) перед полным релизом. В Google Play Console это реализовано через Staged Rollout: вы выпускаете обновление на 5% аудитории, мониторите краши и метрики, и при отсутствии проблем увеличиваете процент. В App Store Connect — через Phased Release for Automatic Updates.
A/B Testing — сравнение двух версий одной фичи на случайных группах пользователей. В мобильной разработке A/B-тесты проводятся через Feature Flags, Firebase Remote Config или серверную логику. Canary Release и A/B-тесты позволяют минимизировать риски при выкладке новых функций.
Feature Flag (Feature Toggle) — условное включение функциональности без развёртывания нового кода. Feature Flag — это проверка в коде: if (featureFlag.isEnabled()) { /* новый код */ } else { /* старый код */ }. Флаги управляются через сервисы: LaunchDarkly, Split.io, Firebase Remote Config. Feature Flags позволяют разработчикам мержить код в main, даже если фича ещё не готова к показу пользователям.
LaunchDarkly — самая популярная платформа управления Feature Flags. LaunchDarkly предоставляет SDK для iOS, Android, Flutter и React Native. Можно включать фичи для конкретных пользователей, сегментов, регионов или процента аудитории. Feature Flags также используются для kill switch — мгновенного отключения проблемной фичи без релиза новой версии приложения.
Часто задаваемые вопросы
Начните с GitHub Actions — если ваш код на GitHub. Actions бесплатен для публичных репозиториев, имеет встроенную поддержку Android и iOS (macOS runners), и огромную экосистему готовых actions. Для мобильной специализации — Bitrise.
Нет, CI-сервисы (GitHub Actions, Bitrise, CircleCI) предоставляют macOS-раннеры. Вы платите за минуты использования. Для локальной отладки Fastlane нужен Mac, но CI может работать и в облаке.
Canary Release — выкатка новой версии на часть пользователей для проверки стабильности. A/B-тест — сравнение двух вариантов одной фичи для выбора лучшего. Canary — про надёжность, A/B — про конверсию.
Fastlane не обязателен, но настоятельно рекомендуется. Без Fastlane вы будете вручную запускать xcodebuild, управлять сертификатами и загружать сборки через веб-интерфейс. Fastlane автоматизирует все эти задачи одной командой.
Match — инструмент Fastlane для управления Code Signing сертификатами iOS. Match хранит сертификаты и provisioning profiles в зашифрованном Git-репозитории и синхронизирует их между всеми разработчиками и CI-сервером.
Итоги
Мы разработаем мобильное приложение под ключ
IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.