CircleCI — is een cloud CI/CD-platform voor automatisering van bouwen, testen en implementeren van software, inclusief mobiele applicaties voor iOS en Android. Volgens CircleCI, 2024, verwerkt het platform maandelijks meer dan 30 miljoen builds en biedt het een unieke architectuur op basis van orbs — kant-en-klare configuratiepakketten voor populaire tools.
Belangrijkste punten
CircleCI — is een cloud CI/CD-platform, opgericht in 2011. Het systeem maakt het mogelijk om pipelines te beschrijven in het YAML-bestand .circleci/config.yml en ze uit te voeren in geïsoleerde containers of virtuele machines. CircleCI ondersteunt alle populaire talen en platforms, waaronder Android, iOS, Flutter en React Native.
Voor mobiele ontwikkeling biedt CircleCI macOS executors voor iOS-builds met vooraf geïnstalleerde Xcode, Linux executors voor Android met Android SDK, evenals caching van Gradle en CocoaPods. Kernfunctie — orbs, waarmee kant-en-klare configuraties met één regel kunnen worden aangesloten: orb: android, orb: ios, orb: flutter. CircleCI detecteert automatisch het projecttype en stelt een sjabloonconfiguratie voor bij de eerste verbinding van de repository.
Het platform ondersteunt SSH-toegang tot actieve containers voor debugging — een handige functie bij het analyseren van mislukte builds. CircleCI CLI maakt het mogelijk om configuraties lokaal te valideren en uit te voeren, orbs te beheren en logs te bekijken. Het platform integreert met GitHub, GitHub Enterprise, Bitbucket en GitLab via een webhooks-systeem.
De CircleCI-architectuur omvat drie niveaus: Pipeline, Workflow en Job. Pipeline — is het hoofdproces, geactiveerd bij een commit. Pipeline bestaat uit Workflows — een graaf van Jobs die sequentieel of parallel kunnen worden uitgevoerd. Elke Job wordt uitgevoerd op een Executor — een omgeving met een specifieke image. Workflow kan approval gates bevatten — handmatige bevestiging vóór implementatie.
Orbs — zijn herbruikbare YAML-configuratiepakketten, gedistribueerd via de CircleCI Orb Registry. Een Orb kan bevatten jobs, commands, executors en voorbeelden. Populaire orbs: android, ios, flutter, firebase, slack. Het aansluiten van een android orb vervangt bijvoorbeeld 50+ regels configuratie door één regel. CircleCI CLI maakt het mogelijk om eigen orbs te maken, testen en publiceren voor standaardisatie van pipelines in de organisatie.
| Executor | Geschikt voor | Build |
|---|---|---|
| Docker | Android, Backend | Linux-container |
| macOS | iOS, macOS | macOS VM met Xcode |
| Machine | Docker-in-Docker | Ubuntu VM |
| Windows | .NET, WinUI | Windows Server |
Contexts — zijn benoemde sets van omgevingsvariabelen, beschikbaar op organisatieniveau. Bijvoorbeeld, de context app-store-credentials bevat Apple ID en wachtwoord voor publicatie in de App Store. Dit vereenvoudigt het beheer van secrets tussen projecten zonder duplicatie.
Voor een Android-project gebruikt CircleCI de Docker-image cibuilds/android met Android SDK. Typische workflow omvat: checkout, installatie van JDK, caching van Gradle, build, uitvoeren van tests. Voor iOS is een macOS executor met Xcode en configuratie van code signing vereist. Bij de eerste verbinding detecteert CircleCI automatisch het projecttype en genereert het een basisconfiguratie met aanbevolen instellingen.
Voor Flutter-projecten biedt CircleCI de orb circleci/flutter, die executors met vooraf geïnstalleerde Flutter SDK voor Linux en macOS bevat. Orb ondersteunt build voor beide platforms, caching van pub-cache en het uitvoeren van tests. Configuratie beperkt zich tot het specificeren van de Flutter-versie en build-opdrachten. Voor aangepaste versies van Flutter of Dart kan een Docker-image met de benodigde SDK worden gebruikt. Flutter orb ondersteunt ook geavanceerde opties — bijvoorbeeld code-analyse via dart analyze vóór de build.
Android orb van CircleCI biedt kant-en-klare jobs: build-and-test, deploy-to-play-store. Orb configureert automatisch de omgeving, caching en ondertekening. Na het aansluiten van de orb volstaat het om de SDK-versie en build-opdrachten op te geven.
Voor iOS-build wordt de executor opgegeven: macos met xcode-versie. CircleCI biedt images met Xcode 14, 15 en 16. Na checkout wordt de code gecompileerd via xcodebuild, worden tests uitgevoerd op de simulator. Code signing wordt geconfigureerd via fastlane match of handmatige installatie van certificaten.
Caching — is een sleutelelement van CircleCI-prestaties. Het cache-mechanisme bewaart mappen tussen workflow-runs op basis van een sleutel. Voor Gradle wordt ~/.gradle gecachet, voor CocoaPods — Pods/, voor npm/SPM — node_modules/.build. Bij wijziging van het lock-bestand wordt de cache automatisch bijgewerkt. CircleCI ondersteunt aparte beleidsregels: save_cache kan worden uitgesteld (when: always), terwijl restore_cache verplicht is.
Parallelism in combinatie met resource class maakt het mogelijk om de build-prestaties nauwkeurig af te stellen. Resource class bepaalt de hoeveelheid CPU en RAM voor de container: small (1 CPU, 2 GB), medium (2 CPU, 4 GB), medium+ (3 CPU, 5 GB) en large (4 CPU, 8 GB). Voor iOS-builds met Xcode wordt aanbevolen een macOS executor te gebruiken met resource class medium of larger — compilatie van Swift-code vereist aanzienlijke resources.
Parallelism verdeelt tests over meerdere containers, waardoor de uitvoeringstijd wordt verkort. Bijvoorbeeld: parallelism: 4 voert tests uit in 4 parallelle containers. CircleCI verdeelt automatisch testbestanden over de containers. Het commando circleci tests glob verzamelt de lijst met tests, en circleci tests split verdeelt ze gelijkmatig.
- 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
Laten we een volledige CircleCI-configuratie bekijken voor een Android-project met twee jobs: build en test. De configuratie omvat Docker executor met Android SDK, Gradle caching en parallelle testuitvoering. Artifacts worden bewaard om te downloaden. De workflow build-and-test voert beide jobs uit bij elke push naar de hoofd branch.
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
Bij de keuze tussen CircleCI en alternatieven — als het team GitHub gebruikt, kan GitHub Actions een eenvoudigere keuze zijn. CircleCI heeft de voorkeur voor teams die flexibele parallel test execution, aanpassing van de executor-omgeving en gedetailleerde build-statistieken nodig hebben. CircleCI Insights biedt een dashboard met prestatiemetrics van pipelines: gemiddelde buildtijd, trends en knelpunten. Insights helpt bij het identificeren van langlopende jobs en het optimaliseren ervan. CircleCI API maakt programmatisch beheer van pipelines, het starten van builds en het verkrijgen van metrics mogelijk.
Voor veilig werken met secrets ondersteunt CircleCI Contexts — benoemde sets van omgevingsvariabelen op organisatieniveau. Contexts zijn beveiligd met rolgebaseerde toegang: alleen bepaalde teams kunnen een specifieke context gebruiken. De context production-deploy bevat bijvoorbeeld App Store Connect-sleutels en is alleen beschikbaar voor lead-ontwikkelaars. In combinatie met approval gates vormt dit een volwaardig CI/CD-beveiligingssysteem.
CircleCI Orb Registry bevat honderden kant-en-klare pakketten voor verschillende CI/CD-taken. Voor mobiele ontwikkeling omvatten belangrijke orbs: circleci/android, circleci/ios, circleci/flutter, laurencerussell/firebase-app-distribution. Elke orb is voorzien van versiebeheer en documentatie. Orbs kunnen openbaar (toegankelijk voor iedereen) en privé (alleen voor uw organisatie) zijn.
Het gebruik van orbs verkort de configuratie met 5–10 keer. Bijvoorbeeld, de orb circleci/android biedt de executor android/default met vooraf geïnstalleerde SDK en de commando's restore-gradle-cache, save-gradle-cache. De orb circleci/ios bevat een executor met Xcode en commando's voor code signing via fastlane. Orbs kunnen eenvoudig worden gecombineerd: sluit een android orb aan voor de build en een slack orb voor meldingen.
CircleCI biedt ook ingebouwde ondersteuning voor testrapporten. Store_test_results parseert en visualiseert automatisch testresultaten van JUnit, XCTest en andere formaten. Voor mobiele projecten betekent dit gecentraliseerd inzicht in mislukte tests, trends in uitvoeringstijd en geschiedenis van build-stabiliteit, wat het onderhoud van codekwaliteit vereenvoudigt.
orbs:
ios: circleci/ios@2.0.0
jobs:
build-and-test:
executor: ios/default
steps:
- checkout
- ios/install-dependencies
- ios/build-and-test
Publicatie van een aangepaste orb is beschikbaar via CircleCI CLI. De commando's circleci orb create en circleci orb publish laden de orb in het register. Dit is handig voor standaardisatie van CI/CD binnen de organisatie — eenmaal gemaakt, gebruikt in alle projecten.
Veelgestelde vragen
CircleCI biedt een gratis plan met 6000 minuten per maand voor één container. Performance Plan ($30/maand) omvat 10 parallelle jobs en 14000 minuten. Scale Plan — individuele prijzen met onbeperkte parallelliteit.
Orbs — zijn herbruikbare YAML-pakketten van CircleCI-configuratie, gedistribueerd via het officiële register. Ze bevatten kant-en-klare jobs, commands en executors voor populaire tools en platforms.
Ja, CircleCI ondersteunt macOS executor met vooraf geïnstalleerde Xcode (versies 14, 15, 16). Images zijn beschikbaar voor iOS 17 en 18, watchOS, tvOS. Code signing wordt geconfigureerd via fastlane match of handmatig.
Specificeer parallelism: N in de job — CircleCI verdeelt de tests over N containers. Het commando circleci tests split verdeelt de tests gelijkmatig. Tests worden parallel uitgevoerd, de totale tijd neemt proportioneel af met het aantal containers.
CircleCI biedt flexibelere executors (Docker, macOS, Machine, Windows), een geavanceerd orbs-systeem, ingebouwde parallel test splitting en gedetailleerde build-artefacten. GitHub Actions blinkt uit in integratie met GitHub en eenvoud.
Samenvatting
We ontwikkelen een mobiele applicatie turnkey
IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.
Lees ook