CircleCI: grunder, orbs och kontinuerlig integration

Författare: IT Sectr Publicerad: 2026-04-13 Lästid: 8 min

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 — molnbaserad CI/CD-plattform med stöd för mobila byggen, Docker och macOS-miljö
  • Orb — färdigt YAML-konfigurationspaket som förenklar inställningen av populära verktyg och tjänster
  • Executor — körningsmiljö för job: Docker-avbildning, Linux VM, macOS eller Windows
  • Parallelism — uppdelning av tester på flera containrar för parallell körning
  • Caching bevarar beroenden mellan körningar och minskar byggtiden 3–5 gånger

Vad är CircleCI?

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-arkitektur: Orbs, Executors och Contexts

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.

Typer av Executors

ExecutorPassar förBygge
DockerAndroid, BackendLinux-container
macOSiOS, macOSmacOS VM med Xcode
MachineDocker-in-DockerUbuntu VM
Windows.NET, WinUIWindows 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.

Konfigurera CircleCI för Android och iOS-projekt

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 — snabbstart

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.

iOS-bygge med macOS-executor

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 och parallell körning

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.

Exempel på Gradle-cachelagring

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

Exempel på konfiguration .circleci/config.yml

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.

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: färdiga lösningar för CI/CD

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.

Exempel med 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

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

Hur mycket kostar CircleCI?

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.

Vad är orbs i CircleCI?

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.

Stöder CircleCI iOS-byggen?

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.

Hur fungerar parallel test execution i CircleCI?

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.

Hur skiljer sig CircleCI från GitHub Actions?

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

  • CircleCI — molnbaserad CI/CD-plattform med stöd för Docker, macOS och Windows-executors för mobila projekt
  • Orbs — färdiga YAML-konfigurationspaket som minskar pipeline-inställningen 5–10 gånger
  • Executor bestämmer körningsmiljön — Docker för Android, macOS VM för iOS, Machine för Docker-in-Docker
  • Parallelism delar upp tester på flera containrar och minskar proportionellt körningstiden
  • Cachelagring via restore_cache och save_cache snabbar upp bygget 3–5 gånger med korrekt nyckelinställning
  • Contexts — säker lagring av hemligheter på organisationsnivå med åtkomst mellan projekt
  • iOS orb och Android orb tillhandahåller färdiga jobs för att bygga, testa och driftsätta mobila applikationer

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.

Diskutera projektet

Läs också