CircleCI — egy felhőalapú CI/CD platform a szoftverek build-elésének, tesztelésének és telepítésének automatizálására, beleértve az iOS és Android mobilos alkalmazásokat is. A CircleCI, 2024 adatai szerint a platform havonta több mint 30 millió buildet dolgoz fel, és egyedi architektúrát kínál orbs — népszerű eszközökhöz készült konfigurációs csomagok — alapján.
Főbb pontok
CircleCI — egy felhőalapú CI/CD platform, amelyet 2011-ben alapítottak. A rendszer lehetővé teszi a pipeline-ok leírását a .circleci/config.yml YAML fájlban, és azok futtatását izolált konténerekben vagy virtuális gépekben. A CircleCI támogatja az összes népszerű nyelvet és platformot, beleértve az Androidot, iOS-t, Flutter-t és React Native-t.
Mobilfejlesztéshez a CircleCI macOS executor-okat kínál iOS build-ekhez előre telepített Xcode-dal, Linux executor-okat Androidhoz Android SDK-val, valamint a Gradle és CocoaPods gyorsítótárazását. Kulcsfontosságú jellemző — az orbs, amelyek lehetővé teszik kész konfigurációk egy soros csatlakoztatását: orb: android, orb: ios, orb: flutter. A CircleCI automatikusan felismeri a projekt típusát, és sablonkonfigurációt ajánl a repository első csatlakoztatásakor.
A platform SSH hozzáférést támogat a futó konténerekhez hibakeresés céljából — hasznos funkció a sikertelen build-ek elemzéséhez. CircleCI CLI lehetővé teszi a konfigurációk helyi érvényesítését és futtatását, az orbs-ok kezelését és a naplók megtekintését. A platform integrálódik a GitHubbal, GitHub Enterprise-ral, Bitbucket-tel és GitLab-lal webhooks rendszeren keresztül.
A CircleCI architektúrája három szintet foglal magában: Pipeline, Workflow és Job. Pipeline — a fő folyamat, amely commit-kor indul el. A Pipeline Workflow-kból áll — a Jobs gráfjából, amelyek szekvenciálisan vagy párhuzamosan hajthatók végre. Minden Job egy Executor-on — egy meghatározott képpel rendelkező környezetben — fut. A Workflow tartalmazhat approval gates-eket — kézi megerősítést a telepítés előtt.
Orbs — újrafelhasználható YAML konfigurációs csomagok, amelyeket a CircleCI Orb Registry-n keresztül terjesztenek. Az Orb tartalmazhat jobs, commands, executor-okat és példákat. Népszerű orbs-ok: android, ios, flutter, firebase, slack. Például az android orb csatlakoztatása 50+ sor konfigurációt helyettesít egyetlen sorral. A CircleCI CLI lehetővé teszi saját orbs-ok létrehozását, tesztelését és közzétételét a pipeline-ok szabványosításához a szervezetben.
| Executor | Alkalmas | Build |
|---|---|---|
| Docker | Android, Backend | Linux konténer |
| macOS | iOS, macOS | macOS VM Xcode-dal |
| Machine | Docker-in-Docker | Ubuntu VM |
| Windows | .NET, WinUI | Windows Server |
Contexts — elnevezett környezeti változókészletek, amelyek szervezeti szinten érhetők el. Például, az app-store-credentials kontextus tartalmazza az Apple ID-t és jelszót az App Store-ban történő közzétételhez. Ez leegyszerűsíti a titkok kezelését a projektek között duplikáció nélkül.
Android projekthez a CircleCI a cibuilds/android Docker képet használja Android SDK-val. Tipikus workflow tartalmazza: checkout, JDK telepítése, Gradle gyorsítótárazása, build, tesztek futtatása. iOS-hez macOS executor szükséges Xcode-dal és code signing beállítással. Az első csatlakozáskor a CircleCI automatikusan felismeri a projekt típusát, és létrehoz egy alapkonfigurációt ajánlott beállításokkal.
Flutter projektekhez a CircleCI a circleci/flutter orb-ot biztosítja, amely előre telepített Flutter SDK-val rendelkező executor-okat tartalmaz Linuxhoz és macOS-hez. Az Orb támogatja a build-et mindkét platformra, a pub-cache gyorsítótárazását és a tesztek futtatását. A beállítás a Flutter verziójának és a build parancsoknak a megadására korlátozódik. Egyedi Flutter vagy Dart verziókhoz a szükséges SDK-val rendelkező Docker kép használható. A Flutter orb támogatja a haladó opciókat is — például a kód elemzését dart analyze segítségével a build előtt.
A CircleCI Android orb-ja kész jobs-okat biztosít: build-and-test, deploy-to-play-store. Az orb automatikusan beállítja a környezetet, a gyorsítótárazást és az aláírást. Az orb csatlakoztatása után elég megadni az SDK verzióját és a build parancsokat.
Az iOS build-hez meg kell adni az executor-t: macos xcode verzióval. A CircleCI biztosítja a képeket Xcode 14, 15 és 16 verziókkal. A checkout után a kód az xcodebuild-en keresztül fordításra kerül, a tesztek a szimulátoron futnak. A code signing a fastlane match-en keresztül vagy a tanúsítványok manuális telepítésével konfigurálható.
A gyorsítótárazás — a CircleCI teljesítményének kulcseleme. A cache mechanizmus megőrzi a könyvtárakat a workflow futtatások között egy kulcs alapján. A Gradle esetében ~/.gradle kerül gyorsítótárazásra, a CocoaPods esetében — Pods/, az npm/SPM esetében — node_modules/.build. A lock fájl változásakor a cache automatikusan frissül. A CircleCI különálló irányelveket támogat: a save_cache késleltethető (when: always), míg a restore_cache kötelező.
A Parallelism a resource class-szal kombinálva lehetővé teszi a build teljesítményének pontos beállítását. Resource class meghatározza a CPU és RAM mennyiségét a konténer számára: small (1 CPU, 2 GB), medium (2 CPU, 4 GB), medium+ (3 CPU, 5 GB) és large (4 CPU, 8 GB). Az Xcode-dal történő iOS build-ekhez ajánlott macOS executor használata resource class medium vagy larger beállítással — a Swift kód fordítása jelentős erőforrásokat igényel.
A Parallelism felosztja a teszteket több konténerre, csökkentve a végrehajtási időt. Például: a parallelism: 4 négy párhuzamos konténerben futtatja a teszteket. A CircleCI automatikusan elosztja a tesztfájlokat a konténerek között. A circleci tests glob parancs összegyűjti a tesztek listáját, a circleci tests split pedig egyenletesen osztja el azokat.
- 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
Vizsgáljunk meg egy teljes CircleCI konfigurációt egy Android projekthez két job-bal: build és test. A konfiguráció tartalmazza a Docker executor-t Android SDK-val, a Gradle gyorsítótárazását és a tesztek párhuzamos futtatását. Az Artifacts letöltésre kerülnek. A build-and-test workflow mindkét job-ot futtatja minden push-nál a fő ágba.
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
A CircleCI és alternatívák közötti választáskor — ha a csapat GitHubot használ, a GitHub Actions egyszerűbb választás lehet. A CircleCI előnyösebb azoknak a csapatoknak, amelyek rugalmas parallel test execution-t, az executor környezet testreszabását és részletes build statisztikákat igényelnek. CircleCI Insights egy irányítópultot biztosít pipeline teljesítménymutatókkal: átlagos build idő, trendek és szűk keresztmetszetek. Az Insights segít azonosítani a hosszan futó job-okat és optimalizálni azokat. A CircleCI API lehetővé teszi a pipeline-ok programozott kezelését, build-ek indítását és mutatók lekérését.
A titkokkal való biztonságos munkához a CircleCI támogatja a Contexts-eket — elnevezett környezeti változókészleteket szervezeti szinten. A Contexts-ek védettek szerepkör-alapú hozzáféréssel: csak bizonyos csapatok használhatnak egy adott context-et. Például a production-deploy kontextus tartalmazza az App Store Connect kulcsokat, és csak a vezető fejlesztők számára elérhető. Az approval gates-ekkel kombinálva ez egy teljes értékű CI/CD biztonsági rendszert alkot.
A CircleCI Orb Registry több száz kész csomagot tartalmaz különböző CI/CD feladatokhoz. Mobilfejlesztéshez a kulcsfontosságú orbs-ok a következők: circleci/android, circleci/ios, circleci/flutter, laurencerussell/firebase-app-distribution. Minden orb verziószámmal és dokumentációval rendelkezik. Az orbs-ok lehetnek nyilvánosak (mindenki számára elérhetőek) és privátak (csak az Ön szervezete számára).
Az orbs-ok használata 5–10-szeresére csökkenti a konfigurációt. Például, a circleci/android orb biztosítja az android/default executor-t előre telepített SDK-val és a restore-gradle-cache, save-gradle-cache parancsokat. A circleci/ios orb tartalmaz egy executor-t Xcode-dal és parancsokat a code signing-hez fastlane-en keresztül. Az orbs-ok könnyen kombinálhatók: csatlakoztassa az android orb-ot a build-hez és a slack orb-ot az értesítésekhez.
A CircleCI beépített támogatást is kínál a tesztjelentésekhez. Store_test_results automatikusan elemzi és vizualizálja a JUnit, XCTest és más formátumú teszteredményeket. Mobilos projekteknél ez a sikertelen tesztek központosított megtekintését, a végrehajtási idő trendjeit és a build stabilitásának történetét jelenti, ami leegyszerűsíti a kódminőség fenntartását.
orbs:
ios: circleci/ios@2.0.0
jobs:
build-and-test:
executor: ios/default
steps:
- checkout
- ios/install-dependencies
- ios/build-and-test
Egyedi orb közzététele a CircleCI CLI-n keresztül lehetséges. A circleci orb create és circleci orb publish parancsok betöltik az orb-ot a regiszterbe. Ez hasznos a CI/CD szabványosításához a szervezeten belül — egyszer létrehozzák, minden projektben használják.
Gyakran Ismételt Kérdések
A CircleCI ingyenes tervet kínál havi 6000 perccel egy konténer számára. A Performance Plan ($30/hó) 10 párhuzamos job-ot és 14000 percet tartalmaz. A Scale Plan — egyedi árak korlátlan párhuzamossággal.
Orbs — újrafelhasználható YAML csomagok CircleCI konfigurációhoz, amelyeket a hivatalos regiszteren keresztül terjesztenek. Kész jobs, commands és executor-okat tartalmaznak népszerű eszközökhöz és platformokhoz.
Igen, a CircleCI támogatja a macOS executor-t előre telepített Xcode-dal (14, 15, 16 verziók). Képek állnak rendelkezésre iOS 17 és 18, watchOS, tvOS rendszerekhez. A code signing a fastlane match-en keresztül vagy manuálisan konfigurálható.
Adja meg a parallelism: N értéket a job-ban — a CircleCI N konténerre osztja a teszteket. A circleci tests split parancs egyenletesen osztja el a teszteket. A tesztek párhuzamosan futnak, a teljes idő a konténerek számával arányosan csökken.
A CircleCI rugalmasabb executor-okat (Docker, macOS, Machine, Windows), fejlett orbs rendszert, beépített parallel test splitting-et és részletes build artefaktumokat kínál. A GitHub Actions a GitHubbal való integrációban és az egyszerűségben jeleskedik.
Összefoglaló
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is