CircleCI — är en molnbaserad CI/CD-plattform för automatisering av byggande, testning och driftsättning av programvara, inklusive mobila applikationer för iOS och Android. Enligt CircleCI, 2024, bearbetar plattformen över 30 miljoner byggen varje månad och erbjuder en unik arkitektur baserad på orbs — färdiga konfigurationspaket för populära verktyg.
Huvudpunkter
CircleCI — är en molnbaserad CI/CD-plattform som grundades 2011. Systemet gör det möjligt att beskriva pipelines i YAML-filen .circleci/config.yml och köra dem i isolerade containrar eller virtuella maskiner. CircleCI stöder alla populära språk och plattformar, inklusive Android, iOS, Flutter och React Native.
För mobilutveckling erbjuder CircleCI macOS-executors för iOS-byggen med förinstallerad Xcode, Linux-executors för Android med Android SDK, samt cachelagring av Gradle och CocoaPods. Nyckelfunktion — orbs, som gör det möjligt att ansluta färdiga konfigurationer med en rad: orb: android, orb: ios, orb: flutter. CircleCI identifierar automatiskt projekttypen och föreslår en mallkonfiguration vid första anslutningen av repositoryt.
Plattformen stöder SSH-åtkomst till körande containrar för felsökning — en användbar funktion vid analys av misslyckade byggen. CircleCI CLI gör det möjligt att lokalt validera och köra konfigurationer, hantera orbs och visa loggar. Plattformen integreras med GitHub, GitHub Enterprise, Bitbucket och GitLab via webhooks-system.
CircleCI-arkitekturen omfattar tre nivåer: Pipeline, Workflow och Job. Pipeline — är huvudprocessen som utlöses vid commit. Pipeline består av Workflows — en graf av Jobs som kan köras sekventiellt eller parallellt. Varje Job körs på en Executor — en miljö med en specifik avbildning. Workflow kan innehålla approval gates — manuell bekräftelse före driftsättning.
Orbs — är återanvändbara YAML-konfigurationspaket som distribueras via CircleCI Orb Registry. En Orb kan innehålla jobs, commands, executors och exempel. Populära orbs: android, ios, flutter, firebase, slack. Att ansluta android orb ersätter till exempel 50+ rader konfiguration med en rad. CircleCI CLI gör det möjligt att skapa, testa och publicera egna orbs för standardisering av pipelines i organisationen.
| Executor | Passar för | Bygge |
|---|---|---|
| Docker | Android, Backend | Linux-container |
| macOS | iOS, macOS | macOS VM med Xcode |
| Machine | Docker-in-Docker | Ubuntu VM |
| Windows | .NET, WinUI | Windows Server |
Contexts — är namngivna uppsättningar av miljövariabler som är tillgängliga på organisationsnivå. Till exempel, context app-store-credentials innehåller Apple ID och lösenord för publicering i App Store. Detta förenklar hanteringen av hemligheter mellan projekt utan duplicering.
För ett Android-projekt använder CircleCI Docker-avbildningen cibuilds/android med Android SDK. Typisk workflow omfattar: checkout, installation av JDK, cachelagring av Gradle, bygge, körning av tester. För iOS krävs en macOS-executor med Xcode och konfiguration av code signing. Vid första anslutningen identifierar CircleCI automatiskt projekttypen och genererar en baskonfiguration med rekommenderade inställningar.
För Flutter-projekt tillhandahåller CircleCI orb circleci/flutter, som innehåller executors med förinstallerad Flutter SDK för Linux och macOS. Orb stöder bygge för båda plattformarna, cachelagring av pub-cache och körning av tester. Konfigurationen begränsas till att ange Flutter-version och byggkommandon. För anpassade versioner av Flutter eller Dart kan en Docker-avbildning med nödvändig SDK användas. Flutter orb stöder även avancerade alternativ — till exempel kodanalys via dart analyze före bygge.
Android orb från CircleCI tillhandahåller färdiga jobs: build-and-test, deploy-to-play-store. Orb konfigurerar automatiskt miljön, cachelagring och signering. Efter anslutning av orb räcker det att ange SDK-version och byggkommandon.
För iOS-bygge anges executor: macos med xcode-version. CircleCI tillhandahåller avbildningar med Xcode 14, 15 och 16. Efter checkout kompileras koden via xcodebuild, tester körs på simulatorn. Code signing konfigureras via fastlane match eller manuell installation av certifikat.
Cachelagring — en nyckelelement i CircleCI-prestanda. Cachemekanismen bevarar kataloger mellan workflow-körningar baserat på en nyckel. För Gradle cachas ~/.gradle, för CocoaPods — Pods/, för npm/SPM — node_modules/.build. När låsfilen ändras uppdateras cachen automatiskt. CircleCI stöder separata policyer: save_cache kan försenas (when: always), medan restore_cache är obligatorisk.
Parallelism i kombination med resource class möjliggör exakt justering av byggprestanda. Resource class bestämmer mängden CPU och RAM för containern: small (1 CPU, 2 GB), medium (2 CPU, 4 GB), medium+ (3 CPU, 5 GB) och large (4 CPU, 8 GB). För iOS-byggen med Xcode rekommenderas att använda macOS-executor med resource class medium eller larger — kompilering av Swift-kod kräver betydande resurser.
Parallelism delar upp tester på flera containrar och minskar körningstiden. Till exempel: parallelism: 4 kör tester i 4 parallella containrar. CircleCI distribuerar automatiskt testfiler mellan containrarna. Kommandot circleci tests glob samlar in listan över tester, och circleci tests split fördelar dem jämnt.
- 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
Låt oss titta på en fullständig CircleCI-konfiguration för ett Android-projekt med två jobs: build och test. Konfigurationen omfattar Docker-executor med Android SDK, Gradle-cachelagring och parallell testkörning. Artifacts sparas för nedladdning. Workflow build-and-test kör båda jobben vid varje push till huvudgrenen.
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
Vid val mellan CircleCI och alternativ — om teamet använder GitHub kan GitHub Actions vara ett enklare val. CircleCI är att föredra för team som behöver flexibel parallel test execution, anpassning av executor-miljö och detaljerad byggstatistik. CircleCI Insights tillhandahåller en dashboard med pipeline-prestandamått: genomsnittlig byggtid, trender och flaskhalsar. Insights hjälper till att identifiera långvariga jobs och optimera dem. CircleCI API möjliggör programmeringsbar hantering av pipelines, start av byggen och hämtning av mätvärden.
För säker hantering av hemligheter stöder CircleCI Contexts — namngivna uppsättningar av miljövariabler på organisationsnivå. Contexts är skyddade med rollbaserad åtkomst: endast vissa team kan använda en specifik context. Till exempel innehåller context production-deploy App Store Connect-nycklar och är endast tillgänglig för lead-utvecklare. I kombination med approval gates bildar detta ett fullfjädrat CI/CD-säkerhetssystem.
CircleCI Orb Registry innehåller hundratals färdiga paket för olika CI/CD-uppgifter. För mobilutveckling inkluderar viktiga orbs: circleci/android, circleci/ios, circleci/flutter, laurencerussell/firebase-app-distribution. Varje orb är versionshanterad och dokumenterad. Orbs kan vara offentliga (tillgängliga för alla) och privata (endast för din organisation).
Användning av orbs minskar konfigurationen 5–10 gånger. Till exempel, orb circleci/android tillhandahåller executor android/default med förinstallerad SDK och kommandona restore-gradle-cache, save-gradle-cache. Orb circleci/ios innehåller en executor med Xcode och kommandon för code signing via fastlane. Orbs kan enkelt kombineras: anslut android orb för bygge och slack orb för notifieringar.
CircleCI erbjuder även inbyggt stöd för testrapporter. Store_test_results tolkar och visualiserar automatiskt testresultat från JUnit, XCTest och andra format. För mobila projekt innebär detta centraliserad översikt över misslyckade tester, trender i körningstid och historik över byggstabilitet, vilket förenklar underhållet av kodkvalitet.
orbs:
ios: circleci/ios@2.0.0
jobs:
build-and-test:
executor: ios/default
steps:
- checkout
- ios/install-dependencies
- ios/build-and-test
Publicering av anpassad orb är möjlig via CircleCI CLI. Kommandona circleci orb create och circleci orb publish laddar upp orben i registret. Detta är användbart för standardisering av CI/CD inom organisationen — skapas en gång, används i alla projekt.
Vanliga frågor
CircleCI erbjuder en gratis plan med 6000 minuter per månad för en container. Performance Plan ($30/mån) inkluderar 10 parallella jobs och 14000 minuter. Scale Plan — individuella priser med obegränsad parallellism.
Orbs — är återanvändbara YAML-paket med CircleCI-konfiguration som distribueras via det officiella registret. De innehåller färdiga jobs, commands och executors för populära verktyg och plattformar.
Ja, CircleCI stöder macOS-executor med förinstallerad Xcode (version 14, 15, 16). Avbildningar finns för iOS 17 och 18, watchOS, tvOS. Code signing konfigureras via fastlane match eller manuellt.
Ange parallelism: N i job — CircleCI delar upp testerna i N containrar. Kommandot circleci tests split fördelar testerna jämnt. Tester körs parallellt och den totala tiden minskar proportionellt mot antalet containrar.
CircleCI erbjuder mer flexibla executors (Docker, macOS, Machine, Windows), ett avancerat orbs-system, inbyggd parallel test splitting och detaljerade byggartefakter. GitHub Actions utmärker sig i integration med GitHub och enkelhet.
Sammanfattning
Vi utvecklar en mobil applikation nyckelfärdigt
IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.
Läs också