CircleCI — iOS və Android də daxil olmaqla mobil tətbiqlər üçün proqram təminatının kompilasiyası, test edilməsi və yerləşdirilməsinin avtomatlaşdırılması üçün bulud CI/CD platformasıdır. CircleCI, 2024 məlumatlarına görə, platforma aylıq 30 milyondan çox kompilasiya emal edir və məşhur alətlər üçün hazır konfiqurasiya paketləri olan orbs əsasında unikal arxitektura təklif edir.
Əsas məqamlar
CircleCI — 2011-ci ildə təsis edilmiş bulud CI/CD platformasıdır. Sistem pipeline'ları .circleci/config.yml YAML faylında təsvir etməyə və onları izolyasiya olunmuş konteynerlərdə və ya virtual maşınlarda icra etməyə imkan verir. CircleCI Android, iOS, Flutter və React Native də daxil olmaqla bütün məşhur dilləri və platformaları dəstəkləyir.
Mobil inkişaf üçün CircleCI öncədən qurulmuş Xcode ilə iOS kompilasiyası üçün macOS executorları, Android SDK ilə Android üçün Linux executorları, həmçinin Gradle və CocoaPods keşləməsini təklif edir. Əsas xüsusiyyət — bir sətirlə hazır konfiqurasiyaları qoşmağa imkan verən orbs-dir: orb: android, orb: ios, orb: flutter. CircleCI avtomatik olaraq layihə növünü müəyyən edir və depozitorinin ilk qoşulmasında şablon konfiqurasiya təklif edir.
Platforma debug üçün işləyən konteynerlərə SSH girişini dəstəkləyir — uğursuz kompilasiyaların təhlili üçün faydalı funksiyadır. CircleCI CLI konfiqurasiyaları lokal olaraq yoxlamağa və icra etməyə, orbs idarə etməyə və loglara baxmağa imkan verir. Platforma webhooks sistemi vasitəsilə GitHub, GitHub Enterprise, Bitbucket və GitLab ilə inteqrasiya olunur.
CircleCI arxitekturası üç səviyyəni əhatə edir: Pipeline, Workflow və Job. Pipeline — commit zamanı tetiklenən əsas prosesdir. Pipeline Workflows — ardıcıl və ya paralel icra oluna bilən Jobs qrafından ibarətdir. Hər bir Job müəyyən görüntü ilə mühit olan Executor-da icra olunur. Workflow yerləşdirmədən əvvəl əl təsdiqi olan approval gates ehtiva edə bilər.
Orbs — CircleCI Orb Registry vasitəsilə yayılan təkrar istifadə olunan YAML konfiqurasiya paketləridir. Orb tərkibində jobs, commands, executors və nümunələr ola bilər. Məşhur orbs: android, ios, flutter, firebase, slack. Məsələn, android orb qoşulması 50+ sətir konfiqurasiyanı bir sətirlə əvəz edir. CircleCI CLI təşkilatda pipeline'ları standartlaşdırmaq üçün öz orbs yaratmağa, test etməyə və nəşr etməyə imkan verir.
| Executor | Uyğundur | Kompilasiya |
|---|---|---|
| Docker | Android, Backend | Linux konteyneri |
| macOS | iOS, macOS | Xcode ilə macOS VM |
| Machine | Docker-in-Docker | Ubuntu VM |
| Windows | .NET, WinUI | Windows Server |
Contexts — təşkilat səviyyəsində mövcud olan adlandırılmış mühit dəyişənləri toplusudur. Məsələn, app-store-credentials konteksti App Store-da nəşr üçün Apple ID və şifrəni ehtiva edir. Bu, təkrarlanmadan layihələr arasında sirlərin idarə edilməsini asanlaşdırır.
Android layihəsi üçün CircleCI Android SDK ilə cibuilds/android Docker görüntüsündən istifadə edir. Tipik workflow daxildir: checkout, JDK quraşdırılması, Gradle keşləməsi, kompilasiya, test işə salma. iOS üçün Xcode və code signing qurulması ilə macOS executor tələb olunur. İlk qoşulmada CircleCI avtomatik olaraq layihə növünü müəyyən edir və tövsiyə olunan parametrlərlə əsas konfiqurasiya yaradır.
Flutter layihələri üçün CircleCI Linux və macOS üçün öncədən qurulmuş Flutter SDK ilə executorları ehtiva edən circleci/flutter orb təqdim edir. Orb dəstəkləyir hər iki platforma üçün kompilasiya, pub-cache keşləməsi və test icrası. Qurulma Flutter versiyasının və kompilasiya əmrlərinin göstərilməsinə qədər azalır. Xüsusi Flutter və ya Dart versiyaları üçün lazımi SDK ilə Docker görüntüsündən istifadə etmək olar. Flutter orb həmçinin qabaqcıl seçimləri dəstəkləyir — məsələn, kompilasiyadan əvvəl dart analyze vasitəsilə kod analizi.
CircleCI-dan Android orb hazır jobs təqdim edir: build-and-test, deploy-to-play-store. Orb avtomatik mühiti, keşləməni və imzanı konfiqurasiya edir. Orb qoşulduqdan sonra SDK versiyasını və kompilasiya əmrlərini göstərmək kifayətdir.
iOS kompilasiyası üçün executor göstərilir: macos xcode versiyası ilə. CircleCI təmin edir Xcode 14, 15 və 16 ilə görüntülər. Checkout-dan sonra kod xcodebuild vasitəsilə kompilasiya olunur, testlər simulyatorda işə salınır. Code signing fastlane match və ya sertifikatların əl ilə quraşdırılması ilə konfiqurasiya olunur.
Keşləmə — CircleCI performansının əsas elementidir. Cache mexanizmi açar üzrə workflow işə salmaları arasında qovluqları saxlayır. Gradle üçün ~/.gradle, CocoaPods üçün — Pods/, npm/SPM üçün — node_modules/.build keşlənir. Lock faylı dəyişdikdə cache avtomatik yenilənir. CircleCI ayrı siyasətləri dəstəkləyir: save_cache təxirə salına bilər (when: always), restore_cache isə məcburidir.
Parallelism resource class ilə birlikdə kompilasiya performansını dəqiq tənzimləməyə imkan verir. Resource class konteyner üçün CPU və RAM miqdarını müəyyən edir: small (1 CPU, 2 GB), medium (2 CPU, 4 GB), medium+ (3 CPU, 5 GB) və large (4 CPU, 8 GB). Xcode ilə iOS kompilasiyaları üçün resource class medium və ya larger ilə macOS executor istifadə etmək tövsiyə olunur — Swift kodunun kompilasiyası əhəmiyyətli resurs tələb edir.
Parallelism testləri bir neçə konteynerə bölür, icra müddətini qısaldır. Məsələn: parallelism: 4 testləri 4 paralel konteynerdə işə salır. CircleCI avtomatik olaraq test fayllarını konteynerlər arasında bölüşdürür. circleci tests glob əmri testlərin siyahısını toplayır, circleci tests split isə onları bərabər paylayır.
- 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
İki job ilə Android layihəsi üçün tam CircleCI konfiqurasiyasını nəzərdən keçirək: build və test. Konfiqurasiya daxildir Android SDK ilə Docker executor, Gradle keşləməsi və paralel test icrası. Artifacts yükləmə üçün saxlanılır. build-and-test workflow əsas branch-a hər push-da hər iki job işə salır.
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 və alternativlər arasında seçim edərkən — əgər komanda GitHub istifadə edirsə, GitHub Actions daha sadə seçim ola bilər. CircleCI çevik parallel test execution, executor environment fərdiləşdirməsi və ətraflı kompilasiya statistikası tələb edən komandalar üçün üstünlük təşkil edir. CircleCI Insights pipeline performans metrikaları ilə dashboard təqdim edir: orta kompilasiya müddəti, trendlər və dar yerlər. Insights uzun müddətli jobs müəyyən etməyə və onları optimallaşdırmağa kömək edir. CircleCI API pipeline'ları proqramlı idarə etməyə, kompilasiyaları işə salmağa və metrikaları əldə etməyə imkan verir.
Sirrlərlə təhlükəsiz iş üçün CircleCI Contexts — təşkilat səviyyəsində adlandırılmış mühit dəyişənləri toplusunu dəstəkləyir. Contexts qorunur rol girişi ilə: yalnız müəyyən komandalar xüsusi context istifadə edə bilər. Məsələn, production-deploy konteksti App Store Connect açarlarını ehtiva edir və yalnız lead developerlər üçün əlçatandır. Approval gates ilə birlikdə bu, tam hüquqlu CI/CD təhlükəsizlik sistemi formalaşdırır.
CircleCI Orb Registry müxtəlif CI/CD tapşırıqları üçün yüzlərlə hazır paket ehtiva edir. Mobil inkişaf üçün əsas orbs daxildir: circleci/android, circleci/ios, circleci/flutter, laurencerussell/firebase-app-distribution. Hər bir orb versiyalanır və sənədləşdirilir. Orbs ictimai (hamı üçün əlçatan) və özəl (yalnız təşkilatınız üçün) ola bilər.
Orbs istifadəsi konfiqurasiyanı 5–10 dəfə qısaldır. Məsələn, circleci/android orb öncədən qurulmuş SDK ilə android/default executor və restore-gradle-cache, save-gradle-cache əmrlərini təmin edir. circleci/ios orb Xcode ilə executor və fastlane vasitəsilə code signing üçün əmrləri ehtiva edir. Orbs asanlıqla birləşdirilə bilər: kompilasiya üçün android orb və bildirişlər üçün slack orb qoşmaq.
CircleCI həmçinin test hesabatları üçün daxili dəstək təklif edir. Store_test_results avtomatik olaraq JUnit, XCTest və digər formatların test nəticələrini təhlil edir və vizuallaşdırır. Mobil layihələr üçün bu, uğursuz testlərin mərkəzləşdirilmiş baxışı, icra müddəti trendləri və kompilasiya sabitliyi tarixi deməkdir ki, bu da kod keyfiyyətinin saxlanmasını asanlaşdırır.
orbs:
ios: circleci/ios@2.0.0
jobs:
build-and-test:
executor: ios/default
steps:
- checkout
- ios/install-dependencies
- ios/build-and-test
Xüsusi orb nəşri CircleCI CLI vasitəsilə mümkündür. circleci orb create və circleci orb publish əmrləri orb reyestrinə yükləyir. Bu, təşkilat daxilində CI/CD standartlaşdırılması üçün faydalıdır — bir dəfə yaradılır, bütün layihələrdə istifadə olunur.
Tez-tez verilən suallar
CircleCI bir konteyner üçün aylıq 6000 dəqiqə ilə pulsuz plan təklif edir. Performance Plan ($30/ay) 10 paralel jobs və 14000 dəqiqə daxildir. Scale Plan — limitsiz paralelliklə fərdi qiymətlər.
Orbs — rəsmi reyestr vasitəsilə yayılan təkrar istifadə olunan YAML paketləri CircleCI konfiqurasiyasıdır. Onlar məşhur alətlər və platformalar üçün hazır jobs, commands və executors ehtiva edir.
Bəli, CircleCI öncədən qurulmuş Xcode (versiyalar 14, 15, 16) ilə macOS executor dəstəkləyir. iOS 17 və 18, watchOS, tvOS üçün görüntülər mövcuddur. Code signing fastlane match və ya əl ilə konfiqurasiya olunur.
Job-da parallelism: N göstərin — CircleCI testləri N konteynerə böləcək. circleci tests split əmri testləri bərabər paylayır. Testlər paralel icra olunur, ümumi vaxt konteynerlərin sayına mütənasib olaraq qısalır.
CircleCI daha çevik executors (Docker, macOS, Machine, Windows), inkişaf etmiş orbs sistemi, daxili parallel test splitting və ətraflı kompilasiya artefaktları təklif edir. GitHub Actions GitHub ilə inteqrasiya və sadəlikdə üstündür.
Xülasə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun