CircleCI: основы, orbs и непрерывная интеграция

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

CircleCI — это облачная CI/CD платформа для автоматизации сборки, тестирования и деплоя программного обеспечения, включая мобильные приложения для iOS и Android. По данным CircleCI, 2024, платформа обрабатывает более 30 миллионов сборок ежемесячно и предлагает уникальную архитектуру на основе orbs — готовых пакетов конфигурации для популярных инструментов.

Главное

  • CircleCI — облачная CI/CD платформа с поддержкой мобильных сборок, Docker и macOS-окружения
  • Orb — готовый YAML-пакет конфигураций, упрощающий настройку популярных инструментов и сервисов
  • Executor — среда выполнения job: Docker-образ, Linux VM, macOS или Windows
  • Parallelism — разделение тестов на несколько контейнеров для параллельного выполнения
  • Caching сохраняет зависимости между запусками, сокращая время сборки в 3–5 раз

Что такое CircleCI?

CircleCI — это облачная CI/CD платформа, основанная в 2011 году. Система позволяет описывать пайплайны в YAML-файле .circleci/config.yml и выполнять их в изолированных контейнерах или виртуальных машинах. CircleCI поддерживает все популярные языки и платформы, включая Android, iOS, Flutter и React Native.

Для мобильной разработки CircleCI предлагает macOS executors для iOS-сборки с предустановленным Xcode, Linux executors для Android с Android SDK, а также кеширование Gradle и CocoaPods. Ключевая особенность — orbs, которые позволяют подключать готовые конфигурации одной строкой: orb: android, orb: ios, orb: flutter. CircleCI автоматически определяет тип проекта и предлагает шаблонную конфигурацию при первом подключении репозитория.

Платформа поддерживает SSH-доступ к запущенным контейнерам для отладки — полезная функция при разборе упавших сборок. CircleCI CLI позволяет локально валидировать и запускать конфигурации, управлять orbs и просматривать логи. Платформа интегрируется с GitHub, GitHub Enterprise, Bitbucket и GitLab через систему webhooks.

Архитектура CircleCI: Orbs, Executors и Contexts

Архитектура CircleCI включает три уровня: Pipeline, Workflow и Job. Pipeline — это корневой процесс, триггерируемый при коммите. Pipeline состоит из Workflows — графа Jobs, которые могут выполняться последовательно или параллельно. Каждый Job выполняется на Executor — среде с определённым образом. Workflow может включать approval gates — ручное подтверждение перед деплоем.

Orbs — это многократно используемые пакеты YAML-конфигурации, распространяемые через CircleCI Orb Registry. Orb может содержать jobs, commands, executors и примеры. Популярные orbs: android, ios, flutter, firebase, slack. Например, подключение android orb заменяет 50+ строк конфигурации на одну строку. CircleCI CLI позволяет создавать, тестировать и публиковать собственные orbs для стандартизации пайплайнов в организации.

Типы Executors

ExecutorПодходит дляСборка
DockerAndroid, BackendLinux контейнер
macOSiOS, macOSmacOS VM с Xcode
MachineDocker-in-DockerUbuntu VM
Windows.NET, WinUIWindows Server

Contexts — это именованные наборы environment variables, доступные на уровне организации. Например, контекст app-store-credentials содержит Apple ID и пароль для публикации в App Store. Это упрощает управление secrets между проектами без дублирования.

Настройка CircleCI для Android и iOS проектов

Для Android-проекта CircleCI использует Docker-образ cibuilds/android с Android SDK. Типовой workflow включает: checkout, установку JDK, кеширование Gradle, сборку, запуск тестов. Для iOS требуется macOS executor с Xcode и настройкой code signing. При первом подключении CircleCI автоматически определяет тип проекта и генерирует базовую конфигурацию с рекомендуемыми настройками.

Для Flutter-проектов CircleCI предоставляет orb circleci/flutter, который включает executors с предустановленным Flutter SDK для Linux и macOS. Orb поддерживает сборку для обеих платформ, кеширование pub-cache и запуск тестов. Настройка сводится к указанию версии Flutter и команд сборки. Для кастомных версий Flutter или Dart можно использовать Docker-образ с необходимым SDK. Flutter orb также поддерживает advanced options — например, анализ кода через dart analyze перед сборкой.

Android orb — быстрый старт

Android orb от CircleCI предоставляет готовые jobs: build-and-test, deploy-to-play-store. Orb автоматически настраивает окружение, кеширование и подпись. После подключения orb достаточно указать версию SDK и команды сборки.

iOS сборка с macOS executor

Для iOS-сборки указывается executor: macos с xcode версией. CircleCI предоставляет образы с Xcode 14, 15 и 16. После checkout код компилируется через xcodebuild, тесты запускаются на симуляторе. Code signing настраивается через fastlane match или ручную установку сертификатов.

Кеширование и параллельное выполнение

Кеширование — ключевой элемент производительности CircleCI. Механизм cache сохраняет директории между запусками workflow по ключу. Для Gradle кешируется ~/.gradle, для CocoaPods — Pods/, для npm/SPM — node_modules/.build. При изменении lock-файла кеш автоматически обновляется. CircleCI поддерживает раздельные policy: save_cache может быть отложенной (when: always), а restore_cache — обязательной.

Parallelism в сочетании с resource class позволяет точно настраивать производительность сборки. Resource class определяет количество CPU и RAM для контейнера: small (1 CPU, 2 GB), medium (2 CPU, 4 GB), medium+ (3 CPU, 5 GB) и large (4 CPU, 8 GB). Для iOS-сборок с Xcode рекомендуется использовать macOS executor с resource class medium или larger — компиляция Swift-кода требует значительных ресурсов.

Parallelism разделяет тесты на несколько контейнеров, сокращая время прогона. Например: parallelism: 4 запускает тесты в 4 параллельных контейнерах. CircleCI автоматически распределяет тестовые файлы по контейнерам. Команда circleci tests glob собирает список тестов, а circleci tests split распределяет их равномерно.

Пример кеширования Gradle

yaml
- restore_cache:
    keys:
      - v1-gradle-{{ checksum "build.gradle" }}
      - v1-gradle-

- run: ./gradlew assembleDebug

- save_cache:
    key: v1-gradle-{{ checksum "build.gradle" }}
    paths:
      - ~/.gradle/caches
      - ~/.gradle/wrapper

Пример конфигурации .circleci/config.yml

Рассмотрим полную конфигурацию CircleCI для Android-проекта с двумя job: build и test. Конфигурация включает Docker executor с Android SDK, кеширование Gradle и параллельный запуск тестов. Artifacts сохраняются для скачивания. Workflow build-and-test запускает оба job при каждом push в основную ветку.

yaml
version: 2.1

orbs:
  android: circleci/android@2.5.0

jobs:
  build:
    executor: android/default
    steps:
      - checkout
      - android/restore-gradle-cache
      - run: ./gradlew assembleRelease
      - android/save-gradle-cache
      - store_artifacts:
          path: app/build/outputs/apk/release
      - store_test_results:
          path: app/build/reports/tests

  test:
    executor: android/default
    parallelism: 4
    steps:
      - checkout
      - android/restore-gradle-cache
      - run:
          command: |
            cd app
            ./gradlew test

workflows:
  version: 2
  build-and-test:
    jobs:
      - build
      - test

Orbs: готовые решения для CI/CD

При выборе между CircleCI и альтернативами — если команда использует GitHub, GitHub Actions может быть более простым выбором. CircleCI предпочтительнее для команд, которым требуется гибкий parallel test execution, кастомизация executor environment и детальная статистика сборок. CircleCI Insights предоставляет дашборд с метриками производительности пайплайнов: среднее время сборки, тренды и узкие места. Insights помогает выявлять jobs с длительным выполнением и оптимизировать их. CircleCI API позволяет программно управлять пайплайнами, запускать сборки и получать метрики.

Для безопасной работы с secrets CircleCI поддерживает Contexts — именованные наборы переменных окружения на уровне организации. Contexts защищены ролевым доступом: только определённые команды могут использовать конкретный context. Например, context production-deploy содержит App Store Connect ключи и доступен только lead-разработчикам. В сочетании с approval gates это формирует полноценную систему безопасности CI/CD.

CircleCI Orb Registry содержит сотни готовых пакетов для различных задач CI/CD. Для мобильной разработки ключевые orbs включают: circleci/android, circleci/ios, circleci/flutter, laurencerussell/firebase-app-distribution. Каждый orb версионируется и документирован. Orbs могут быть публичными (доступны всем) и приватными (только для вашей организации).

Использование orbs сокращает конфигурацию в 5–10 раз. Например, orb circleci/android предоставляет executor android/default с предустановленным SDK и команды restore-gradle-cache, save-gradle-cache. Orb circleci/ios включает executor с Xcode и команды для code signing через fastlane. Orbs можно легко комбинировать: подключить android orb для сборки и slack orb для уведомлений.

CircleCI также предлагает встроенную поддержку тестовых отчётов. Store_test_results автоматически парсит и визуализирует результаты тестов JUnit, XCTest и других форматов. Для мобильных проектов это означает централизованный просмотр упавших тестов, трендов времени выполнения и истории стабильности сборок, что упрощает поддержку качества кода.

Пример с iOS orb

yaml
orbs:
  ios: circleci/ios@2.0.0

jobs:
  build-and-test:
    executor: ios/default
    steps:
      - checkout
      - ios/install-dependencies
      - ios/build-and-test

Публикация кастомного orb доступна через CircleCI CLI. Команда circleci orb create и circleci orb publish загружает orb в регистри. Это полезно для стандартизации CI/CD внутри организации — создаётся один раз, используется во всех проектах.

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

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

CircleCI предлагает бесплатный план с 6000 минут в месяц для одного контейнера. Performance Plan ($30/мес) включает 10 параллельных jobs и 14000 минут. Scale Plan — индивидуальные цены с неограниченной параллельностью.

Что такое orbs в CircleCI?

Orbs — это многократно используемые YAML-пакеты конфигурации CircleCI, распространяемые через официальный регистри. Они содержат готовые jobs, commands и executors для популярных инструментов и платформ.

Поддерживает ли CircleCI iOS-сборки?

Да, CircleCI поддерживает macOS executor с предустановленным Xcode (версии 14, 15, 16). Доступны образы для iOS 17 и 18, watchOS, tvOS. Code signing настраивается через fastlane match или вручную.

Как работает parallel test execution в CircleCI?

Укажите parallelism: N в job — CircleCI разделит тесты на N контейнеров. Команда circleci tests split распределяет тесты равномерно. Тесты выполняются параллельно, общее время сокращается пропорционально количеству контейнеров.

Чем CircleCI отличается от GitHub Actions?

CircleCI предлагает более гибкие executors (Docker, macOS, Machine, Windows), развитую систему orbs, встроенный parallel test splitting и детальные артефакты сборки. GitHub Actions выигрывает в интеграции с GitHub и простоте.

Итоги

  • CircleCI — облачная CI/CD платформа с поддержкой Docker, macOS и Windows executors для мобильных проектов
  • Orbs — готовые YAML-пакеты конфигурации, сокращающие настройку пайплайнов в 5–10 раз
  • Executor определяет среду выполнения — Docker для Android, macOS VM для iOS, Machine для Docker-in-Docker
  • Parallelism разделяет тесты на несколько контейнеров, пропорционально сокращая время прогона
  • Кеширование через restore_cache и save_cache ускоряет сборку в 3–5 раз при правильной настройке ключа
  • Contexts — безопасное хранение secrets на уровне организации с доступом между проектами
  • iOS orb и Android orb предоставляют готовые jobs для сборки, тестирования и деплоя мобильных приложений

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

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

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

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