CircleCI — iOS va Android mobil ilovalarini ham o'z ichiga olgan dasturiy ta'minotni qurish, testlash va joylashtirishni avtomatlashtirish uchun bulutli CI/CD platformasidir. CircleCI, 2024 ma'lumotlariga ko'ra, platforma oyiga 30 milliondan ortiq qurilishni qayta ishlaydi va mashhur vositalar uchun tayyor konfiguratsiya paketlari — orbs asosida noyob arxitekturani taklif etadi.
Asosiy fikrlar
CircleCI — 2011-yilda asos solingan bulutli CI/CD platformasidir. Tizim pipeline'larni .circleci/config.yml YAML faylida tasvirlash va ularni izolyatsiya qilingan konteynerlar yoki virtual mashinalarda bajarish imkonini beradi. CircleCI Android, iOS, Flutter va React Native-ni o'z ichiga olgan barcha mashhur tillar va platformalarni qo'llab-quvvatlaydi.
Mobil ishlanma uchun CircleCI oldindan o'rnatilgan Xcode bilan iOS qurilishi uchun macOS executorlarni, Android SDK bilan Android uchun Linux executorlarni, shuningdek Gradle va CocoaPods keshlashni taklif etadi. Asosiy xususiyat — bir qator bilan tayyor konfiguratsiyalarni ulash imkonini beruvchi orbs: orb: android, orb: ios, orb: flutter. CircleCI avtomatik ravishda loyiha turini aniqlaydi va repozitoriy birinchi ulanganda shablon konfiguratsiyasini taklif qiladi.
Platforma nosozliklarni tuzatish uchun ishlayotgan konteynerlarga SSH kirishini qo'llab-quvvatlaydi — muvaffaqiyatsiz qurilishlarni tahlil qilishda foydali funksiya. CircleCI CLI konfiguratsiyalarni mahalliy tekshirish va ishga tushirish, orbs boshqarish va loglarni ko'rish imkonini beradi. Platforma webhooks tizimi orqali GitHub, GitHub Enterprise, Bitbucket va GitLab bilan integratsiyalanadi.
CircleCI arxitekturasi uch darajani o'z ichiga oladi: Pipeline, Workflow va Job. Pipeline — commit vaqtida ishga tushiriladigan asosiy jarayon. Pipeline Workflows — ketma-ket yoki parallel bajarilishi mumkin bo'lgan Jobs grafigidan iborat. Har bir Job Executor — ma'lum tasvirga ega muhitda bajariladi. Workflow joylashtirishdan oldin qo'lda tasdiqlash — approval gates-ni o'z ichiga olishi mumkin.
Orbs — CircleCI Orb Registry orqali tarqatiladigan qayta foydalaniladigan YAML konfiguratsiya paketlaridir. Orb tarkibida jobs, commands, executors va namunalar bo'lishi mumkin. Mashhur orbs: android, ios, flutter, firebase, slack. Masalan, android orb ulanishi 50+ qator konfiguratsiyani bir qator bilan almashtiradi. CircleCI CLI tashkilotda pipeline'larni standartlashtirish uchun o'z orbs yaratish, testlash va nashr qilish imkonini beradi.
| Executor | Mos keladi | Qurilish |
|---|---|---|
| Docker | Android, Backend | Linux konteyner |
| macOS | iOS, macOS | Xcode bilan macOS VM |
| Machine | Docker-in-Docker | Ubuntu VM |
| Windows | .NET, WinUI | Windows Server |
Contexts — tashkilot darajasida mavjud bo'lgan nomlangan muhit o'zgaruvchilari to'plamidir. Masalan, app-store-credentials konteksti App Store-da nashr qilish uchun Apple ID va parolni o'z ichiga oladi. Bu takrorlanmasdan loyihalar orasida sirlarni boshqarishni soddalashtiradi.
Android loyihasi uchun CircleCI Android SDK bilan cibuilds/android Docker tasviridan foydalanadi. Oddiy workflow o'z ichiga oladi: checkout, JDK o'rnatish, Gradle keshlash, qurilish, testlarni ishga tushirish. iOS uchun Xcode va code signing sozlamalari bilan macOS executor talab qilinadi. Birinchi ulanishda CircleCI avtomatik ravishda loyiha turini aniqlaydi va tavsiya etilgan sozlamalar bilan asosiy konfiguratsiya yaratadi.
Flutter loyihalari uchun CircleCI Linux va macOS uchun oldindan o'rnatilgan Flutter SDK bilan executorlarni o'z ichiga olgan circleci/flutter orb-ni taklif etadi. Orb qo'llab-quvvatlaydi ikkala platforma uchun qurilish, pub-cache keshlash va testlarni ishga tushirish. Sozlash Flutter versiyasi va qurilish buyruqlarini ko'rsatishgacha qisqaradi. Maxsus Flutter yoki Dart versiyalari uchun kerakli SDK bilan Docker tasviridan foydalanish mumkin. Flutter orb shuningdek ilg'or variantlarni qo'llab-quvvatlaydi — masalan, qurilishdan oldin dart analyze orqali kod tahlili.
CircleCI dan Android orb tayyor jobs-larni taklif etadi: build-and-test, deploy-to-play-store. Orb avtomatik muhitni, keshlashni va imzolashni sozlaydi. Orb ulangandan so'ng, SDK versiyasi va qurilish buyruqlarini ko'rsatish kifoya.
iOS qurilishi uchun executor ko'rsatiladi: macos xcode versiyasi bilan. CircleCI ta'minlaydi Xcode 14, 15 va 16 bilan tasvirlar. Checkout-dan so'ng kod xcodebuild orqali kompilyatsiya qilinadi, testlar simulyatorda ishga tushiriladi. Code signing fastlane match yoki sertifikatlarni qo'lda o'rnatish orqali sozlanadi.
Keshlash — CircleCI unumdorligining asosiy elementidir. Cache mexanizmi kalit bo'yicha workflow ishga tushirishlari orasida kataloglarni saqlaydi. Gradle uchun ~/.gradle, CocoaPods uchun — Pods/, npm/SPM uchun — node_modules/.build keshlanadi. Lock fayli o'zgarganda cache avtomatik yangilanadi. CircleCI alohida siyosatlarni qo'llab-quvvatlaydi: save_cache kechiktirilishi mumkin (when: always), restore_cache esa majburiydir.
Parallelism resource class bilan birgalikda qurilish unumdorligini aniq sozlash imkonini beradi. Resource class konteyner uchun CPU va RAM miqdorini belgilaydi: small (1 CPU, 2 GB), medium (2 CPU, 4 GB), medium+ (3 CPU, 5 GB) va large (4 CPU, 8 GB). Xcode bilan iOS qurilishlari uchun resource class medium yoki larger bilan macOS executoridan foydalanish tavsiya etiladi — Swift kodini kompilyatsiya qilish muhim resurslarni talab qiladi.
Parallelism testlarni bir nechta konteynerga bo'ladi, bajarish vaqtini qisqartiradi. Masalan: parallelism: 4 testlarni 4 parallel konteynerda ishga tushiradi. CircleCI avtomatik ravishda test fayllarini konteynerlar orasida taqsimlaydi. circleci tests glob buyrug'i testlar ro'yxatini yig'adi, circleci tests split esa ularni teng taqsimlaydi.
- 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
Ikkita job bilan Android loyihasi uchun to'liq CircleCI konfiguratsiyasini ko'rib chiqaylik: build va test. Konfiguratsiya o'z ichiga oladi Android SDK bilan Docker executor, Gradle keshlash va parallel test ishga tushirish. Artifacts yuklab olish uchun saqlanadi. build-and-test workflow asosiy branch-ga har bir push-da ikkala job-ni ishga tushiradi.
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
CircleCI va alternativlar o'rtasida tanlashda — agar jamoa GitHub-dan foydalansa, GitHub Actions oddiyroq tanlov bo'lishi mumkin. CircleCI moslashuvchan parallel test execution, executor muhitini sozlash va batafsil qurilish statistikasini talab qiladigan jamoalar uchun afzalroqdir. CircleCI Insights pipeline unumdorligi ko'rsatkichlari bilan dashboard taqdim etadi: o'rtacha qurilish vaqti, trendlar va tor joylar. Insights uzoq davom etadigan job-larni aniqlash va ularni optimallashtirishga yordam beradi. CircleCI API pipeline'larni dasturiy boshqarish, qurilishlarni ishga tushirish va ko'rsatkichlarni olish imkonini beradi.
Sirli ma'lumotlar bilan xavfsiz ishlash uchun CircleCI Contexts — tashkilot darajasidagi nomlangan muhit o'zgaruvchilari to'plamini qo'llab-quvvatlaydi. Contexts himoyalangan rolga asoslangan kirish bilan: faqat ma'lum jamoalar muayyan context-dan foydalanishi mumkin. Masalan, production-deploy konteksti App Store Connect kalitlarini o'z ichiga oladi va faqat lead dasturchilar uchun mavjud. Approval gates bilan birgalikda bu to'liq CI/CD xavfsizlik tizimini shakllantiradi.
CircleCI Orb Registry turli CI/CD vazifalari uchun yuzlab tayyor paketlarni o'z ichiga oladi. Mobil ishlanma uchun asosiy orbs o'z ichiga oladi: circleci/android, circleci/ios, circleci/flutter, laurencerussell/firebase-app-distribution. Har bir orb versiyalanadi va hujjatlashtiriladi. Orbs umumiy (hamma uchun mavjud) va shaxsiy (faqat tashkilotingiz uchun) bo'lishi mumkin.
Orbs dan foydalanish konfiguratsiyani 5–10 barobar qisqartiradi. Masalan, circleci/android orb oldindan o'rnatilgan SDK bilan android/default executor va restore-gradle-cache, save-gradle-cache buyruqlarini ta'minlaydi. circleci/ios orb Xcode bilan executor va fastlane orqali code signing uchun buyruqlarni o'z ichiga oladi. Orbs oson birlashtirilishi mumkin: qurilish uchun android orb va bildirishnomalar uchun slack orb ulash.
CircleCI shuningdek test hisobotlari uchun o'rnatilgan qo'llab-quvvatlashni taklif etadi. Store_test_results avtomatik ravishda JUnit, XCTest va boshqa formatlardagi test natijalarini tahlil qiladi va vizuallashtiradi. Mobil loyihalar uchun bu muvaffaqiyatsiz testlarning markazlashtirilgan ko'rinishi, bajarish vaqti trendlari va qurilish barqarorligi tarixini anglatadi, bu kod sifatini saqlashni soddalashtiradi.
orbs:
ios: circleci/ios@2.0.0
jobs:
build-and-test:
executor: ios/default
steps:
- checkout
- ios/install-dependencies
- ios/build-and-test
Maxsus orb nashr qilish CircleCI CLI orqali mumkin. circleci orb create va circleci orb publish buyruqlari orb-ni reyestrga yuklaydi. Bu tashkilot ichida CI/CD standartlashtirish uchun foydali — bir marta yaratiladi, barcha loyihalarda ishlatiladi.
Ko'p beriladigan savollar
CircleCI bitta konteyner uchun oyiga 6000 daqiqa bilan bepul rejani taklif etadi. Performance Plan ($30/oy) 10 parallel job va 14000 daqiqani o'z ichiga oladi. Scale Plan — cheksiz parallellik bilan individual narxlar.
Orbs — rasmiy reyestr orqali tarqatiladigan qayta foydalaniladigan YAML paketlari CircleCI konfiguratsiyasidir. Ular mashhur vositalar va platformalar uchun tayyor jobs, commands va executors-ni o'z ichiga oladi.
Ha, CircleCI oldindan o'rnatilgan Xcode (versiyalar 14, 15, 16) bilan macOS executor-ni qo'llab-quvvatlaydi. iOS 17 va 18, watchOS, tvOS uchun tasvirlar mavjud. Code signing fastlane match yoki qo'lda sozlanadi.
Job-da parallelism: N ni ko'rsating — CircleCI testlarni N konteynerga bo'ladi. circleci tests split buyrug'i testlarni teng taqsimlaydi. Testlar parallel bajariladi, umumiy vaqt konteynerlar soniga mutanosib ravishda qisqaradi.
CircleCI moslashuvchanroq executorlar (Docker, macOS, Machine, Windows), rivojlangan orbs tizimi, o'rnatilgan parallel test splitting va batafsil qurilish artefaktlarini taklif etadi. GitHub Actions GitHub bilan integratsiya va soddalikda ustun.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.