CircleCI یک پلتفرم CI/CD ابری برای اتوماسیون ساخت، تست و استقرار نرمافزار، از جمله برنامههای موبایل برای iOS و Android است. به گزارش CircleCI، 2024، این پلتفرم ماهانه بیش از ۳۰ میلیون ساخت را پردازش میکند و معماری منحصربهفردی مبتنی بر orbs — بستههای پیکربندی آماده برای ابزارهای محبوب — ارائه میدهد.
نکات کلیدی
CircleCI یک پلتفرم CI/CD ابری است که در سال ۲۰۱۱ تأسیس شد. این سیستم امکان توصیف pipelineها در فایل YAML .circleci/config.yml و اجرای آنها در کانتینرهای ایزوله یا ماشینهای مجازی را فراهم میکند. CircleCI از تمام زبانها و پلتفرمهای محبوب از جمله Android، iOS، Flutter و React Native پشتیبانی میکند.
برای توسعه موبایل، CircleCI executorهای macOS را برای ساخت iOS با Xcode از پیش نصبشده، executorهای Linux را برای Android با Android SDK، و همچنین کش کردن Gradle و CocoaPods ارائه میدهد. ویژگی کلیدی — orbs هستند که امکان اتصال پیکربندیهای آماده را با یک خط فراهم میکنند: orb: android، orb: ios، orb: flutter. CircleCI به طور خودکار نوع پروژه را تشخیص میدهد و در اولین اتصال مخزن، یک پیکربندی پیشفرض پیشنهاد میکند.
این پلتفرم از دسترسی SSH به کانتینرهای در حال اجرا برای اشکالزدایی پشتیبانی میکند — ویژگی مفید برای تحلیل ساختهای ناموفق. CircleCI CLI امکان اعتبارسنجی و اجرای محلی پیکربندیها، مدیریت orbs و مشاهده لاگها را فراهم میکند. این پلتفرم از طریق سیستم webhooks با GitHub، GitHub Enterprise، Bitbucket و GitLab یکپارچه میشود.
معماری CircleCI شامل سه سطح است: Pipeline، Workflow و Job. Pipeline — فرآیند ریشهای است که در زمان commit فعال میشود. Pipeline از Workflows — گرافی از Jobs که میتوانند به صورت ترتیبی یا موازی اجرا شوند — تشکیل شده است. هر Job روی Executor — محیطی با تصویر مشخص — اجرا میشود. Workflow میتواند شامل approval gates — تأیید دستی قبل از استقرار — باشد.
Orbs — بستههای پیکربندی YAML قابل استفاده مجدد هستند که از طریق CircleCI Orb Registry منتشر میشوند. Orb میتواند شامل jobs، commands، executors و نمونهها باشد. orbs محبوب: android، ios، flutter، firebase، slack. به عنوان مثال، اتصال android orb بیش از ۵۰ خط پیکربندی را با یک خط جایگزین میکند. CircleCI CLI امکان ایجاد، تست و انتشار orbs سفارشی برای استانداردسازی pipelineها در سازمان را فراهم میکند.
| Executor | مناسب برای | ساخت |
|---|---|---|
| Docker | Android، Backend | کانتینر Linux |
| macOS | iOS، macOS | macOS VM با Xcode |
| Machine | Docker-in-Docker | Ubuntu VM |
| Windows | .NET، WinUI | Windows Server |
Contexts — مجموعههای نامگذاری شده از متغیرهای محیطی هستند که در سطح سازمان در دسترس هستند. به عنوان مثال، زمینه app-store-credentials شامل Apple ID و رمز عبور برای انتشار در App Store است. این کار مدیریت secrets را بین پروژهها بدون تکرار ساده میکند.
برای پروژه Android، CircleCI از تصویر Docker cibuilds/android با Android SDK استفاده میکند. workflow معمولی شامل: checkout، نصب JDK، کش کردن Gradle، ساخت، اجرای تستها. برای iOS به macOS executor با Xcode و تنظیمات code signing نیاز است. در اولین اتصال، CircleCI به طور خودکار نوع پروژه را تشخیص میدهد و یک پیکربندی پایه با تنظیمات توصیهشده تولید میکند.
برای پروژههای Flutter، CircleCI orb circleci/flutter را ارائه میدهد که شامل executorهایی با Flutter SDK از پیش نصبشده برای Linux و macOS است. Orb پشتیبانی میکند از ساخت برای هر دو پلتفرم، کش کردن pub-cache و اجرای تستها. راهاندازی به مشخص کردن نسخه Flutter و دستورات ساخت خلاصه میشود. برای نسخههای سفارشی Flutter یا Dart میتوان از تصویر Docker با SDK لازم استفاده کرد. Flutter orb همچنین از گزینههای پیشرفته پشتیبانی میکند — به عنوان مثال، تحلیل کد از طریق dart analyze قبل از ساخت.
Android orb از CircleCI jobs آماده ارائه میدهد: build-and-test، deploy-to-play-store. Orb به طور خودکار محیط، کش کردن و امضا را پیکربندی میکند. پس از اتصال orb، فقط کافی است نسخه SDK و دستورات ساخت را مشخص کنید.
برای ساخت iOS، executor مشخص میشود: macos با نسخه xcode. CircleCI ارائه میدهد تصاویر با Xcode 14، 15 و 16. پس از checkout، کد از طریق xcodebuild کامپایل میشود، تستها روی شبیهساز اجرا میشوند. Code signing از طریق fastlane match یا نصب دستی گواهیها پیکربندی میشود.
کش کردن — عنصر کلیدی کارایی CircleCI است. مکانیزم cache دایرکتوریها را بین اجراهای workflow بر اساس کلید حفظ میکند. برای Gradle، ~/.gradle کش میشود، برای CocoaPods — Pods/، برای npm/SPM — node_modules/.build. هنگام تغییر فایل lock، cache به طور خودکار بهروزرسانی میشود. CircleCI از سیاستهای جداگانه پشتیبانی میکند: save_cache میتواند به تأخیر بیفتد (when: always)، در حالی که restore_cache اجباری است.
Parallelism در ترکیب با resource class امکان تنظیم دقیق کارایی ساخت را فراهم میکند. Resource class تعداد CPU و RAM را برای کانتینر تعیین میکند: small (1 CPU، 2 GB)، medium (2 CPU، 4 GB)، medium+ (3 CPU، 5 GB) و large (4 CPU، 8 GB). برای ساختهای iOS با Xcode توصیه میشود از macOS executor با resource class medium یا larger استفاده کنید — کامپایل کد Swift به منابع قابل توجهی نیاز دارد.
Parallelism تستها را روی چند کانتینر تقسیم میکند و زمان اجرا را کاهش میدهد. به عنوان مثال: parallelism: 4 تستها را در ۴ کانتینر موازی اجرا میکند. CircleCI به طور خودکار فایلهای تست را بین کانتینرها توزیع میکند. دستور circleci tests glob لیست تستها را جمعآوری میکند و circleci tests split آنها را به طور مساوی تقسیم میکند.
- 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
بیایید پیکربندی کامل CircleCI را برای یک پروژه Android با دو job بررسی کنیم: build و test. پیکربندی شامل Docker executor با Android SDK، کش کردن Gradle و اجرای موازی تستها است. Artifacts برای دانلود ذخیره میشوند. workflow build-and-test هر دو job را در هر push به شاخه اصلی اجرا میکند.
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 و جایگزینها — اگر تیم از GitHub استفاده میکند، GitHub Actions ممکن است انتخاب سادهتری باشد. CircleCI برای تیمهایی که نیاز به parallel test execution انعطافپذیر، سفارشیسازی محیط executor و آمار دقیق ساخت دارند، ارجحیت دارد. CircleCI Insights داشبوردی با معیارهای عملکرد pipeline ارائه میدهد: میانگین زمان ساخت، روندها و تنگناها. Insights به شناسایی jobs با زمان طولانی و بهینهسازی آنها کمک میکند. CircleCI API امکان مدیریت برنامهریزی شده pipelineها، اجرای ساختها و دریافت معیارها را فراهم میکند.
برای کار ایمن با secrets، CircleCI از Contexts — مجموعههای نامگذاری شده متغیرهای محیطی در سطح سازمان — پشتیبانی میکند. Contexts محافظت میشوند با دسترسی مبتنی بر نقش: فقط تیمهای خاص میتوانند از context خاصی استفاده کنند. به عنوان مثال، context production-deploy شامل کلیدهای App Store Connect است و فقط برای توسعهدهندگان اصلی در دسترس است. در ترکیب با approval gates، این یک سیستم امنیتی کامل CI/CD تشکیل میدهد.
CircleCI Orb Registry شامل صدها بسته آماده برای وظایف مختلف CI/CD است. برای توسعه موبایل، orbs کلیدی عبارتند از: circleci/android، circleci/ios، circleci/flutter، laurencerussell/firebase-app-distribution. هر orb نسخهبندی و مستندسازی میشود. Orbs میتوانند عمومی (در دسترس همه) و خصوصی (فقط برای سازمان شما) باشند.
استفاده از orbs پیکربندی را ۵–۱۰ برابر کاهش میدهد. به عنوان مثال، orb circleci/android executor android/default را با SDK از پیش نصبشده و دستورات restore-gradle-cache، save-gradle-cache ارائه میدهد. orb circleci/ios شامل executor با Xcode و دستوراتی برای code signing از طریق fastlane است. Orbs را میتوان به راحتی ترکیب کرد: اتصال android orb برای ساخت و slack orb برای اعلانها.
CircleCI همچنین پشتیبانی داخلی از گزارشهای تست را ارائه میدهد. Store_test_results به طور خودکار نتایج تستهای JUnit، XCTest و سایر فرمتها را تجزیه و بصری میکند. برای پروژههای موبایل، این به معنای مشاهده متمرکز تستهای ناموفق، روندهای زمان اجرا و تاریخچه پایداری ساخت است که نگهداری کیفیت کد را ساده میکند.
orbs:
ios: circleci/ios@2.0.0
jobs:
build-and-test:
executor: ios/default
steps:
- checkout
- ios/install-dependencies
- ios/build-and-test
انتشار orb سفارشی از طریق CircleCI CLI امکانپذیر است. دستورات circleci orb create و circleci orb publish orb را در رجیستری بارگذاری میکنند. این برای استانداردسازی CI/CD در داخل سازمان مفید است — یک بار ایجاد میشود، در همه پروژهها استفاده میشود.
سوالات متداول
CircleCI یک طرح رایگان با ۶۰۰۰ دقیقه در ماه برای یک کانتینر ارائه میدهد. Performance Plan (۳۰ دلار در ماه) شامل ۱۰ job موازی و ۱۴۰۰۰ دقیقه است. Scale Plan — قیمتهای فردی با موازیسازی نامحدود.
Orbs — بستههای YAML قابل استفاده مجدد پیکربندی CircleCI هستند که از طریق رجیستری رسمی منتشر میشوند. آنها شامل jobs، commands و executors آماده برای ابزارها و پلتفرمهای محبوب هستند.
بله، CircleCI از macOS executor با Xcode از پیش نصبشده (نسخههای ۱۴، ۱۵، ۱۶) پشتیبانی میکند. تصاویر برای iOS 17 و 18، watchOS، tvOS در دسترس هستند. Code signing از طریق fastlane match یا به صورت دستی پیکربندی میشود.
parallelism: N را در job مشخص کنید — CircleCI تستها را به N کانتینر تقسیم میکند. دستور circleci tests split تستها را به طور مساوی توزیع میکند. تستها به صورت موازی اجرا میشوند و زمان کل به نسبت تعداد کانتینرها کاهش مییابد.
CircleCI executorهای انعطافپذیرتر (Docker، macOS، Machine، Windows)، سیستم orbs پیشرفته، parallel test splitting داخلی و مصنوعات ساخت دقیق ارائه میدهد. GitHub Actions در یکپارچگی با GitHub و سادگی برتر است.
خلاصه
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید