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 executor-e за iOS изградњу са пред-инсталираним Xcode, Linux executor-e за 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, executor-e и примере. Популарни orbs: android, ios, flutter, firebase, slack. На пример, повезивање android orb-а замењује 50+ линија конфигурације једном линијом. CircleCI CLI омогућава креирање, тестирање и објављивање сопствених orbs-а за стандардизацију пајплајнова у организацији.

Типови Executor-а

ExecutorПогодан заИзградња
DockerAndroid, BackendLinux контејнер
macOSiOS, macOSmacOS VM са Xcode
MachineDocker-in-DockerUbuntu VM
Windows.NET, WinUIWindows Server

Contexts — су именовани скупови променљивих окружења, доступни на нивоу организације. На пример, контекст app-store-credentials садржи Apple ID и лозинку за објављивање у App Store. Ово поједностављује управљање тајнама између пројеката без дуплирања.

Подешавање 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, који укључује executor-е са пред-инсталираним Flutter SDK-ом за Linux и macOS. Orb подржава изградњу за обе платформе, кеширање pub-cache-а и покретање тестова. Подешавање се своди на навођење верзије Flutter-а и команди за изградњу. За прилагођене верзије Flutter-а или Dart-а може се користити Docker слика са потребним SDK-ом. Flutter orb такође подржава напредне опције — на пример, анализу кода путем 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 датотеке, cache се аутоматски ажурира. CircleCI подржава одвојене политике: 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 окружења и детаљна статистика изградњи. CircleCI Insights пружа контролну таблу са метрикама перформанси пајплајнова: просечно време изградње, трендови и уска грла. Insights помаже у идентификовању job-ова са дугим извршавањем и њиховој оптимизацији. CircleCI API омогућава програмско управљање пајплајновима, покретање изградњи и добијање метрика.

За безбедан рад са тајнама, 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 паралелних job-ова и 14000 минута. Scale Plan — индивидуалне цене са неограниченом паралелношћу.

Шта су orbs у CircleCI-ју?

Orbs — су YAML пакети за вишекратну употребу CircleCI конфигурације, дистрибуирани путем званичног регистра. Садрже готове jobs, commands и executor-е за популарне алате и платформе.

Да ли 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 нуди флексибилније executor-е (Docker, macOS, Machine, Windows), напредни систем orbs-а, уграђено parallel test splitting и детаљне артефакте изградње. GitHub Actions предњачи у интеграцији са GitHub-ом и једноставности.

Резиме

  • CircleCI — облачна CI/CD платформа са подршком за Docker, macOS и Windows executor-е за мобилне пројекте
  • Orbs — готови YAML пакети конфигурације који смањују подешавање пајплајнова 5–10 пута
  • Executor одређује окружење извршавања — Docker за Android, macOS VM за iOS, Machine за Docker-in-Docker
  • Parallelism дели тестове на више контејнера, пропорционално смањујући време извршавања
  • Кеширање путем restore_cache и save_cache убрзава изградњу 3–5 пута уз правилно подешавање кључа
  • Contexts — безбедно чување тајни на нивоу организације са приступом између пројеката
  • iOS orb и Android orb нуде готове jobs за изградњу, тестирање и примену мобилних апликација

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође