Bitrise — ключевые понятия, Workflows и непрерывная интеграция

Автор: IT Sectr Опубликовано: 2026-04-13 Время чтения: 8 мин

Bitrise — это специализированная CI/CD платформа для мобильной разработки, построенная вокруг готовых Steps — предварительно настроенных модулей для сборки, подписи и публикации iOS и Android приложений. По данным Bitrise, 2024, платформа поддерживает более 400 готовых Steps и интегрируется с Xcode, Gradle, Fastlane, Firebase и App Store Connect.

Главное

  • Bitrise — CI/CD платформа, специализированная для мобильных проектов на iOS, Android, Flutter и React Native
  • Workflow — последовательность Steps, определяющая пайплайн сборки, тестирования и деплоя
  • Step — готовый модуль для конкретной задачи: установка зависимостей, запуск тестов, code signing
  • Code Signing — Bitrise автоматически управляет сертификатами и provisioning profiles для iOS
  • Secrets — защищённое хранение токенов, ключей и паролей для доступа к сторонним сервисам

Что такое Bitrise?

Bitrise — это CI/CD платформа, запущенная в 2016 году и полностью сфокусированная на мобильной разработке. В отличие от универсальных решений GitHub Actions и GitLab CI, Bitrise изначально проектировалась для автоматизации сборки iOS и Android приложений. Платформа работает в облаке и предоставляет собственные хостируемые runners с macOS и Linux. Bitrise поддерживает все популярные мобильные стеки: Swift, Kotlin, Flutter, React Native, Cordova и Xamarin.

Основное преимущество Bitrise — предварительно настроенные Step templates для типовых задач мобильной разработки: Xcode build, Gradle assemble, Fastlane, Firebase Distribution, TestFlight, Google Play. Настройка пайплайна занимает минуты через визуальный редактор, а YAML-конфигурация генерируется автоматически в файле bitrise.yml. Для опытных пользователей доступен YAML-редактор с автодополнением.

Архитектура Bitrise: Workflows и Steps

Архитектура Bitrise строится на двух ключевых понятиях: Workflow и Step. Workflow — это последовательность Steps, определяющая пайплайн. Каждый проект может иметь несколько Workflows: primary (основная сборка), deploy (публикация), test (только тесты). Workflow запускается по триггерам: push, PR, tag или по расписанию. Workflow можно запускать вручную из веб-интерфейса, что полезно для ad-hoc сборок.

Step — это атомарный модуль, выполняющий одну задачу. Шаги можно перетаскивать в визуальном редакторе, менять их порядок и конфигурацию. Bitrise предоставляет Steps для Xcode Archive & Export, Gradle Runner, CocoaPods Install, Firebase Distribution, Slack-уведомлений. Сообщество тоже создаёт Steps — они доступны через Step Library. Каждый Step имеет обязательные и опциональные input-параметры, а также output-переменные, которые могут быть использованы последующими Steps.

Bitrise поддерживает концепцию Pipeline — объединение нескольких Workflows в один пайплайн. Pipeline может включать primary сборку для всех платформ и отдельные workflow для деплоя и тестирования. Это позволяет создать сложные CI/CD-процессы, где одна сборка запускает другую. Stacks Bitrise определяют предустановленное ПО на runner: Xcode, Android SDK, Flutter, Node.js и другие инструменты.

Популярные Steps для мобильных проектов

  • Xcode Archive & Export — сборка и экспорт IPA с управлением provisioning profile
  • Gradle Runner — запуск Gradle задач с аргументами и кешированием
  • Flutter Build — сборка Flutter-приложений для iOS и Android
  • Firebase App Distribution — публикация сборки для тестировщиков
  • Certificate and Profile Installer — автоматическая установка сертификатов code signing

Интеграция Bitrise с Git-репозиториями

Bitrise интегрируется с GitHub, GitLab, Bitbucket и Azure DevOps. При подключении репозитория Bitrise автоматически обнаруживает тип проекта (iOS, Android, Flutter) и предлагает шаблон Workflow. Для приватных репозиториев Bitrise запрашивает доступ через OAuth или SSH-ключ. Поддерживается подключение нескольких репозиториев к одному приложению.

После подключения Bitrise создаёт webhook в репозитории для автоматического запуска сборок при push и PR. Каждая сборка получает уникальный номер, логи и артефакты. Интерфейс позволяет просматривать историю сборок, сравнивать изменения и перезапускать упавшие билды. Bitrise также поддерживает scheduled builds для регулярных ночных сборок и интеграцию с Jira для трекинга коммитов.

Code Signing и публикация в App Store и Google Play

Code signing для iOS — одна из самых сложных задач CI/CD, и Bitrise решает её максимально просто. Платформа хранит сертификаты и provisioning profiles в зашифрованном виде, автоматически устанавливает их в нужный keychain перед сборкой и экспортирует подписанный IPA. Step Certificate and Profile Installer скачивает файлы из хранилища Bitrise и настраивает Xcode. Поддерживаются типы Development, AdHoc, AppStore и Enterprise сертификатов.

Для публикации в App Store Connect Bitrise предоставляет Steps для загрузки IPA через Xcode Archive & Export. Google Play публикация использует Gradle Runner с подписью через Keystore, после чего APK/AAB загружается в Google Play Console через Google Play Deploy Step. Для Firebase App Distribution достаточно указать Firebase Token и группу тестировщиков. Bitrise автоматизирует обновление версий сборки (version number и build number) перед каждой публикацией.

Настройка code signing в Bitrise

Сертификаты загружаются в раздел Code Signing веб-интерфейса: P12 с приватным ключом, provisioning profile (.mobileprovision), Keystore (.jks/.keystore) для Android. Bitrise автоматически устанавливает iOS сертификаты в keychain при каждом запуске Workflow и экспортирует подписанное приложение. Для Android достаточно загрузить Keystore файл — Bitrise передаёт его Gradle через переменные окружения при сборке.

Пример конфигурации Bitrise для Flutter

Рассмотрим Workflow для Flutter-приложения, который собирает и публикует сборки для iOS и Android. Bitrise автоматически определяет Flutter-проект и предлагает соответствующие Steps. Workflow включает установку Flutter, кеширование pub-cache, сборку, тестирование и деплой. Для iOS-сборки дополнительно требуются сертификаты code signing, которые Bitrise подгружает автоматически.

При сборке Flutter-приложений Bitrise поддерживает раздельную конфигурацию для платформ. Android-сборка выполняется на Linux runner с Flutter SDK, iOS — на macOS runner. Workflow может включать условные Steps: build_android и build_ios, которые запускаются только на соответствующих платформах. Для React Native проектов Bitrise предлагает аналогичный набор Steps с npm/nvm и Metro bundler.

yaml
format_version: 13
default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git

trigger_map:
- push_branch: main
  workflow: primary

workflows:
  primary:
    steps:
    - activate-ssh-key@4:
        run_if: true
    - git-clone@8: {}
    - flutter-installer@0:
        inputs:
        - version: 3.24.0
    - flutter-build@0:
        inputs:
        - platform: both
        - ios_output_type: archive
    - deploy-to-bitrise-io@2: {}

Кастомный Step для деплоя

После сборки можно добавить Step Firebase App Distribution для iOS и Android. Step принимает firebase_token, app_id и testers_group. Bitrise подставляет значения из Secrets — безопасное хранение токенов гарантирует, что они не попадут в логи.

yaml
- firebase-app-distribution@1:
    inputs:
    - firebase_token: $FIREBASE_TOKEN
    - app_id: $FIREBASE_IOS_APP_ID
    - testers_group: qa-team
    - release_notes: |
        Build $BITRISE_BUILD_NUMBER

Secrets и управление окружением

Правильное управление конфиденциальными данными — основа безопасности CI/CD процессов. Bitrise Secrets зашифрованы и недоступны для чтения после сохранения. При создании нового приложения Bitrise предлагает импортировать secrets из другого проекта или задать вручную. Для больших команд доступна функция Environment Groups — централизованное управление переменными и secrets для группы приложений.

Bitrise предоставляет встроенное хранилище Secrets для конфиденциальных данных: API-ключи, токены Firebase, пароли Keystore, Apple ID. Secrets задаются парами ключ-значение в веб-интерфейсе и маскируются в логах сборки. Доступны на уровне приложения и на уровне Workflow. Secrets нельзя прочитать после сохранения — их можно только перезаписать.

Environment Variables (без метки Secret) используются для конфигураций: версия Xcode, путь к проекту, схема сборки. Переменные окружения Bitrise (BITRISE_BUILD_NUMBER, BITRISE_APP_TITLE) предоставляют мета-информацию о сборке. Secrets шифруются при хранении и расшифровываются только на runner во время выполнения Workflow. Для группового управления переменными Bitrise поддерживает Environment Groups — наборы переменных, применимые к нескольким приложениям одновременно.

Особого внимания заслуживает управление iOS сертификатами через Bitrise. Платформа автоматически устанавливает P12 и provisioning profile в системный keychain перед сборкой. Для Android используется Keystore file, который загружается в Code Signing секцию. Каждый файл сертификата хранится в зашифрованном виде и расшифровывается только во время билда.

Пример использования Secrets

yaml
- google-play-deploy@3:
    inputs:
    - package_name: com.example.app
    - service_account_json_key: $SERVICE_ACCOUNT_KEY
    - app_file: $BITRISE_APK_PATH

Стеки и окружения Bitrise

Bitrise предлагает различные стеки (stack) для сборки — предустановленные образы с инструментами и SDK. Доступны стеки для Xcode (версии 14, 15, 16 с iOS SDK 17, 18), для Android (с разными версиями SDK и NDK), для Flutter, React Native и Kotlin Multiplatform. Каждый стек имеет описание предустановленных инструментов и версий.

Выбор стека влияет на время сборки и совместимость с проектом. Bitrise регулярно обновляет стеки, добавляя новые версии инструментов. Можно зафиксировать конкретную версию стека в bitrise.yml, чтобы избежать неожиданных изменений при обновлении платформы. Для кастомных зависимостей используется Script Step, устанавливающий необходимые пакеты перед основной сборкой. Bitrise также поддерживает Docker-образы для Linux stacks, что позволяет использовать кастомное окружение для Android-сборок.

Часто задаваемые вопросы

Сколько стоит Bitrise?

Bitrise предлагает бесплатный план с 90 минут сборки в месяц и одним concurrent build. Developer ($79/мес) включает 3000 минут, до 5 concurrent builds и все интеграции. Enterprise — индивидуальное ценообразование.

Какие платформы поддерживает Bitrise?

Bitrise поддерживает iOS (Swift, Objective-C), Android (Kotlin, Java), Flutter, React Native, Cordova, Ionic и Xamarin. Для каждой платформы есть предустановленные инструменты и шаблоны Workflow.

Нужен ли macOS runner для iOS в Bitrise?

Bitrise предоставляет macOS runners для iOS-сборки без дополнительной настройки. Платформа сама управляет macOS инфраструктурой — runner выбирается автоматически в зависимости от стека приложения.

Как Bitrise управляет iOS сертификатами?

Bitrise хранит сертификаты в зашифрованном виде и автоматически устанавливает их в keychain перед сборкой через Step Certificate and Profile Installer. Для Android аналогично — Keystore загружается и используется Gradle при подписи.

Можно ли кастомизировать Steps в Bitrise?

Да, Bitrise поддерживает кастомные Steps через Script Step (bash-скрипт) и кастомные Step Library из GitHub. Можно также создать собственный Step по документации Bitrise и опубликовать в Step Library.

Итоги

  • Bitrise — специализированная CI/CD платформа для мобильной разработки с готовыми Steps для iOS и Android
  • Workflow — последовательность Steps, настраиваемая в визуальном редакторе или в bitrise.yml
  • Step — модуль для конкретной задачи: сборка Xcode, Gradle, публикация в Firebase, Slack-уведомления
  • Code Signing — автоматическое управление iOS сертификатами и Android Keystore без ручных операций
  • Secrets — защищённое хранение токенов и ключей с маскировкой в логах сборки
  • Интеграция с GitHub, GitLab, Bitbucket через webhooks с авто-определением типа проекта
  • macOS runners для iOS-сборки предоставляются Bitrise — не требуется собственная инфраструктура

Мы разработаем мобильное приложение под ключ

IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.

Обсудить проект

Читайте также