CircleCI — ay isang cloud CI/CD platform para sa automation ng pagbuo, pagsubok at pag-deploy ng software, kabilang ang mga mobile application para sa iOS at Android. Ayon sa CircleCI, 2024, ang platform ay nagpoproseso ng mahigit 30 milyong build buwan-buwan at nag-aalok ng natatanging arkitektura batay sa orbs — mga handa nang configuration package para sa mga sikat na tool.
Mga Pangunahing Punto
CircleCI — ay isang cloud CI/CD platform, na itinatag noong 2011. Ang sistema ay nagbibigay-daan sa paglalarawan ng mga pipeline sa YAML file na .circleci/config.yml at pagpapatakbo ng mga ito sa mga nakahiwalay na container o virtual machine. Sinusuportahan ng CircleCI ang lahat ng sikat na wika at platform, kabilang ang Android, iOS, Flutter at React Native.
Para sa mobile development, nag-aalok ang CircleCI ng macOS executors para sa iOS build na may pre-installed na Xcode, Linux executors para sa Android na may Android SDK, pati na rin ang caching ng Gradle at CocoaPods. Pangunahing tampok — orbs, na nagpapahintulot sa pagkonekta ng mga handa nang configuration sa isang linya: orb: android, orb: ios, orb: flutter. Awtomatikong nakikita ng CircleCI ang uri ng proyekto at nag-aalok ng template configuration sa unang pagkonekta ng repository.
Sinusuportahan ng platform ang SSH access sa mga tumatakbong container para sa pag-debug — isang kapaki-pakinabang na tampok sa pagsusuri ng mga nabigong build. CircleCI CLI ay nagbibigay-daan sa lokal na pag-validate at pagpapatakbo ng mga configuration, pamamahala ng orbs at pagtingin ng mga log. Ang platform ay sumasama sa GitHub, GitHub Enterprise, Bitbucket at GitLab sa pamamagitan ng webhooks system.
Ang arkitektura ng CircleCI ay may kasamang tatlong antas: Pipeline, Workflow at Job. Pipeline — ay ang pangunahing proseso, na na-trigger sa commit. Ang Pipeline ay binubuo ng Workflows — isang graph ng Jobs na maaaring isagawa nang sunud-sunod o parallel. Ang bawat Job ay isinasagawa sa isang Executor — isang kapaligiran na may tiyak na image. Ang Workflow ay maaaring maglaman ng approval gates — manu-manong kumpirmasyon bago ang pag-deploy.
Orbs — ay mga reusable na YAML configuration package, na ipinamamahagi sa pamamagitan ng CircleCI Orb Registry. Ang Orb ay maaaring maglaman ng jobs, commands, executors at mga halimbawa. Mga sikat na orbs: android, ios, flutter, firebase, slack. Halimbawa, ang pagkonekta ng android orb ay pumapalit sa 50+ linya ng configuration ng isang linya. Ang CircleCI CLI ay nagbibigay-daan sa paglikha, pagsubok at pag-publish ng sariling orbs para sa standardisasyon ng mga pipeline sa organisasyon.
| Executor | Angkop para sa | Build |
|---|---|---|
| Docker | Android, Backend | Linux container |
| macOS | iOS, macOS | macOS VM na may Xcode |
| Machine | Docker-in-Docker | Ubuntu VM |
| Windows | .NET, WinUI | Windows Server |
Contexts — ay mga pinangalanang set ng environment variables, na available sa antas ng organisasyon. Halimbawa, ang kontekstong app-store-credentials ay naglalaman ng Apple ID at password para sa pag-publish sa App Store. Pinapadali nito ang pamamahala ng mga lihim sa pagitan ng mga proyekto nang walang pagdoble.
Para sa isang proyekto ng Android, gumagamit ang CircleCI ng Docker image na cibuilds/android na may Android SDK. Karaniwang workflow ay kasama ang: checkout, pag-install ng JDK, caching ng Gradle, build, pagpapatakbo ng mga test. Para sa iOS, kinakailangan ang macOS executor na may Xcode at configuration ng code signing. Sa unang pagkonekta, awtomatikong nakikita ng CircleCI ang uri ng proyekto at bumubuo ng pangunahing configuration na may mga inirerekomendang setting.
Para sa mga proyekto ng Flutter, nagbibigay ang CircleCI ng orb circleci/flutter, na may kasamang executors na may pre-installed na Flutter SDK para sa Linux at macOS. Sinusuportahan ng Orb ang build para sa parehong platform, caching ng pub-cache at pagpapatakbo ng mga test. Ang configuration ay bumababa sa pagtukoy ng bersyon ng Flutter at mga command ng build. Para sa mga custom na bersyon ng Flutter o Dart, maaaring gumamit ng Docker image na may kinakailangang SDK. Sinusuportahan din ng Flutter orb ang mga advanced na opsyon — halimbawa, pagsusuri ng code sa pamamagitan ng dart analyze bago ang build.
Ang Android orb mula sa CircleCI ay nagbibigay ng mga handa nang jobs: build-and-test, deploy-to-play-store. Awtomatikong ini-configure ng Orb ang kapaligiran, caching at pagpirma. Pagkatapos kumonekta ng orb, sapat na upang tukuyin ang bersyon ng SDK at mga command ng build.
Para sa iOS build, tinutukoy ang executor: macos na may bersyon ng xcode. Nagbibigay ang CircleCI ng mga image na may Xcode 14, 15 at 16. Pagkatapos ng checkout, ang code ay kino-compile sa pamamagitan ng xcodebuild, ang mga test ay pinapatakbo sa simulator. Ang code signing ay na-configure sa pamamagitan ng fastlane match o manu-manong pag-install ng mga certificate.
Caching — ay pangunahing elemento ng pagganap ng CircleCI. Mekanismo ng cache ay nag-iimbak ng mga direktoryo sa pagitan ng mga run ng workflow batay sa isang key. Para sa Gradle, ~/.gradle ay naka-cache, para sa CocoaPods — Pods/, para sa npm/SPM — node_modules/.build. Kapag nagbago ang lock file, awtomatikong naa-update ang cache. Sinusuportahan ng CircleCI ang magkakahiwalay na patakaran: ang save_cache ay maaaring maantala (when: always), habang ang restore_cache ay sapilitan.
Parallelism kasama ang resource class ay nagbibigay-daan sa tumpak na pag-aayos ng pagganap ng build. Resource class ay tumutukoy sa dami ng CPU at RAM para sa container: small (1 CPU, 2 GB), medium (2 CPU, 4 GB), medium+ (3 CPU, 5 GB) at large (4 CPU, 8 GB). Para sa iOS builds na may Xcode, inirerekomenda ang paggamit ng macOS executor na may resource class medium o larger — ang compilation ng Swift code ay nangangailangan ng malaking resources.
Parallelism ay naghahati ng mga test sa maraming container, binabawasan ang oras ng pagpapatupad. Halimbawa: parallelism: 4 ay nagpapatakbo ng mga test sa 4 na parallel container. Awtomatikong ipinamamahagi ng CircleCI ang mga test file sa mga container. Ang command na circleci tests glob ay nangongolekta ng listahan ng mga test, at ang circleci tests split ay namamahagi ng mga ito nang pantay.
- 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
Tingnan natin ang isang kumpletong CircleCI configuration para sa isang Android project na may dalawang job: build at test. Kasama sa configuration ang Docker executor na may Android SDK, Gradle caching at parallel na pagpapatakbo ng test. Ang Artifacts ay iniimbak para sa pag-download. Ang workflow na build-and-test ay nagpapatakbo ng parehong job sa bawat push sa pangunahing 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
Sa pagpili sa pagitan ng CircleCI at mga alternatibo — kung ang team ay gumagamit ng GitHub, ang GitHub Actions ay maaaring maging mas simpleng pagpili. Ang CircleCI ay mas mainam para sa mga team na nangangailangan ng flexible parallel test execution, pag-customize ng executor environment at detalyadong build statistics. CircleCI Insights ay nagbibigay ng dashboard na may mga sukatan ng pagganap ng pipeline: average na oras ng build, trends at mga bottleneck. Tumutulong ang Insights sa pagtukoy ng mga job na may mahabang pagpapatupad at pag-optimize ng mga ito. Ang CircleCI API ay nagbibigay-daan sa programmatic na pamamahala ng mga pipeline, pagsisimula ng mga build at pagkuha ng mga sukatan.
Para sa ligtas na pagtatrabaho sa mga lihim, sinusuportahan ng CircleCI ang Contexts — mga pinangalanang set ng environment variables sa antas ng organisasyon. Ang Contexts ay protektado ng role-based access: ilang partikular na team lamang ang maaaring gumamit ng isang partikular na context. Halimbawa, ang kontekstong production-deploy ay naglalaman ng mga susi ng App Store Connect at available lamang sa mga lead developer. Kasama ng approval gates, ito ay bumubuo ng isang ganap na sistema ng seguridad ng CI/CD.
Ang CircleCI Orb Registry ay naglalaman ng daan-daang handa nang package para sa iba't ibang gawain ng CI/CD. Para sa mobile development, ang mga pangunahing orbs ay kinabibilangan ng: circleci/android, circleci/ios, circleci/flutter, laurencerussell/firebase-app-distribution. Bawat orb ay may bersyon at dokumentasyon. Ang Orbs ay maaaring pampubliko (accessible sa lahat) at pribado (para lamang sa iyong organisasyon).
Ang paggamit ng orbs ay nagbabawas ng configuration nang 5–10 beses. Halimbawa, ang orb circleci/android ay nagbibigay ng executor android/default na may pre-installed na SDK at mga command na restore-gradle-cache, save-gradle-cache. Ang orb circleci/ios ay may kasamang executor na may Xcode at mga command para sa code signing sa pamamagitan ng fastlane. Ang mga orb ay madaling pagsamahin: ikonekta ang android orb para sa build at slack orb para sa mga notification.
Nag-aalok din ang CircleCI ng built-in na suporta para sa mga test report. Store_test_results ay awtomatikong nagpe-parse at nagvi-visualize ng mga resulta ng test ng JUnit, XCTest at iba pang format. Para sa mga mobile project, ito ay nangangahulugan ng sentralisadong pagtingin sa mga nabigong test, trends ng oras ng pagpapatupad at kasaysayan ng stability ng build, na nagpapadali sa pagpapanatili ng kalidad ng code.
orbs:
ios: circleci/ios@2.0.0
jobs:
build-and-test:
executor: ios/default
steps:
- checkout
- ios/install-dependencies
- ios/build-and-test
Pag-publish ng custom na orb ay available sa pamamagitan ng CircleCI CLI. Ang mga command na circleci orb create at circleci orb publish ay naglo-load ng orb sa registry. Ito ay kapaki-pakinabang para sa standardisasyon ng CI/CD sa loob ng organisasyon — ginagawa nang isang beses, ginagamit sa lahat ng proyekto.
Mga Madalas Itanong
Nag-aalok ang CircleCI ng libreng plano na may 6000 minuto bawat buwan para sa isang container. Ang Performance Plan ($30/buwan) ay may kasamang 10 parallel na job at 14000 minuto. Ang Scale Plan — indibidwal na presyo na may walang limitasyong parallelisasyon.
Orbs — ay mga reusable na YAML package ng CircleCI configuration, na ipinamamahagi sa pamamagitan ng opisyal na registry. Naglalaman ang mga ito ng mga handa nang jobs, commands at executors para sa mga sikat na tool at platform.
Oo, sinusuportahan ng CircleCI ang macOS executor na may pre-installed na Xcode (mga bersyon 14, 15, 16). Available ang mga image para sa iOS 17 at 18, watchOS, tvOS. Ang code signing ay na-configure sa pamamagitan ng fastlane match o mano-mano.
Tukuyin ang parallelism: N sa job — hahatiin ng CircleCI ang mga test sa N container. Ang command na circleci tests split ay namamahagi ng mga test nang pantay. Ang mga test ay isinasagawa nang parallel, ang kabuuang oras ay nababawasan nang proporsyonal sa bilang ng mga container.
Nag-aalok ang CircleCI ng mas nababagong executors (Docker, macOS, Machine, Windows), isang advanced na orbs system, built-in parallel test splitting at detalyadong build artifacts. Ang GitHub Actions ay higit na mahusay sa integrasyon sa GitHub at pagiging simple.
Buod
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din