CircleCI, iOS ve Android için mobil uygulamalar dahil olmak üzere yazılımın derleme, test ve dağıtımını otomatikleştiren bir bulut CI/CD platformudur. CircleCI, 2024'ye göre platform aylık 30 milyondan fazla derleme işler ve orbs — popüler araçlar için hazır yapılandırma paketleri — tabanlı benzersiz bir mimari sunar.
Önemli Noktalar
CircleCI, 2011 yılında kurulmuş bir bulut CI/CD platformudur. Sistem, YAML dosyası .circleci/config.yml içinde pipeline'ları tanımlamanıza ve bunları izole edilmiş kapsayıcılarda veya sanal makinelerde çalıştırmanıza olanak tanır. CircleCI, Android, iOS, Flutter ve React Native dahil tüm popüler dilleri ve platformları destekler.
Mobil geliştirme için CircleCI, önceden yüklenmiş Xcode ile iOS derlemeleri için macOS executor'ları, Android SDK ile Linux executor'ları ve ayrıca Gradle ve CocoaPods için önbellekleme sunar. Önemli bir özellik, tek bir satırla hazır yapılandırmaları bağlamanıza olanak tanıyan orbs'tur: orb: android, orb: ios, orb: flutter. CircleCI, bir depoyu ilk kez bağladığınızda proje türünü otomatik olarak algılar ve bir şablon yapılandırması önerir.
Platform, hata ayıklama için çalışan kapsayıcılara SSH erişimini destekler — başarısız derlemelerin sorun gidermesi için kullanışlı bir özelliktir. CircleCI CLI, yapılandırmaları yerel olarak doğrulamanıza ve çalıştırmanıza, orbs'ları yönetmenize ve günlükleri görüntülemenize olanak tanır. Platform, webhook sistemi aracılığıyla GitHub, GitHub Enterprise, Bitbucket ve GitLab ile entegre olur.
CircleCI mimarisi üç seviyeden oluşur: Pipeline, Workflow ve Job. Pipeline, bir commit ile tetiklenen kök süreçtir. Bir Pipeline, sıralı veya paralel olarak çalıştırılabilen Job'ların bir grafiği olan Workflow'lardan oluşur. Her Job, bir Executor — belirli bir imaja sahip bir ortam — üzerinde çalışır. Bir Workflow, dağıtımdan önce onay kapıları (approval gates) — manuel onay — içerebilir.
Orbs, CircleCI Orb Registry aracılığıyla dağıtılan yeniden kullanılabilir YAML yapılandırma paketleridir. Bir Orb şunları içerebilir: jobs, commands, executors ve örnekler. Popüler orbs: android, ios, flutter, firebase, slack. Örneğin, android orb'unu eklemek, 50+ satır yapılandırmayı tek bir satırla değiştirir. CircleCI CLI, kuruluş genelinde pipeline'ları standartlaştırmak için kendi orbs'larınızı oluşturmanıza, test etmenize ve yayınlamanıza olanak tanır.
| Executor | Uygun | Derleme Ortamı |
|---|---|---|
| Docker | Android, Backend | Linux kapsayıcı |
| macOS | iOS, macOS | Xcode ile macOS VM |
| Machine | Docker-in-Docker | Ubuntu VM |
| Windows | .NET, WinUI | Windows Server |
Contexts, kuruluş düzeyinde kullanılabilen adlandırılmış ortam değişkenleri kümeleridir. Örneğin, app-store-credentials bağlamı, App Store'da yayınlamak için Apple Kimliği ve parolayı içerir. Bu, projeler arasında sırların (secrets) yönetimini tekrarsız bir şekilde basitleştirir.
Bir Android projesi için CircleCI, Android SDK ile cibuilds/android Docker imajını kullanır. Tipik bir iş akışı şunları içerir: checkout, JDK kurulumu, Gradle önbellekleme, derleme, test çalıştırma. iOS için Xcode ve kod imzalama kurulumu ile bir macOS executor gereklidir. İlk bağlantıda CircleCI, proje türünü otomatik olarak algılar ve önerilen ayarlarla temel bir yapılandırma oluşturur.
Flutter projeleri için CircleCI, Linux ve macOS için önceden yüklenmiş Flutter SDK ile executor'lar içeren circleci/flutter orb'unu sağlar. Orb şunları destekler: her iki platform için derleme, pub-cache önbellekleme ve test çalıştırma. Kurulum, Flutter sürümünü ve derleme komutlarını belirtmekten ibarettir. Özel Flutter veya Dart sürümleri için gerekli SDK ile bir Docker imajı kullanılabilir. Flutter orb ayrıca gelişmiş seçenekleri de destekler — örneğin, derlemeden önce dart analyze ile kod analizi.
CircleCI'nin Android orb'u hazır işler sağlar: build-and-test, deploy-to-play-store. Orb otomatik olarak ortamı, önbelleklemeyi ve imzalamayı yapılandırır. Orb'u ekledikten sonra yalnızca SDK sürümünü ve derleme komutlarını belirtmeniz yeterlidir.
iOS derlemeleri için executor, bir Xcode sürümüyle macos olarak ayarlanır. CircleCI şunları sağlar: Xcode 14, 15 ve 16 ile imajlar. Checkout'tan sonra kod xcodebuild aracılığıyla derlenir ve testler simülatörde çalıştırılır. Kod imzalama, fastlane match veya manuel sertifika yüklemesi yoluyla yapılandırılır.
Önbellekleme, CircleCI'da önemli bir performans öğesidir. Önbellek mekanizması, bir anahtar kullanarak iş akışı çalıştırmaları arasında dizinleri kaydeder. Gradle için ~/.gradle önbelleğe alınır; CocoaPods için — Pods/; npm/SPM için — node_modules/.build. Kilit dosyası değiştiğinde önbellek otomatik olarak güncellenir. CircleCI ayrı politikaları destekler: save_cache geciktirilebilir (when: always), restore_cache ise zorunludur.
Paralellik, resource class ile birleştiğinde derleme performansında ince ayar yapılmasına olanak tanır. Resource class, bir kapsayıcı için CPU ve RAM'i belirler: small (1 CPU, 2 GB), medium (2 CPU, 4 GB), medium+ (3 CPU, 5 GB) ve large (4 CPU, 8 GB). Xcode ile iOS derlemeleri için, medium veya larger resource class ile macOS executor kullanılması önerilir — Swift kodu derlemesi önemli kaynaklar gerektirir.
Paralellik, testleri birden çok kapsayıcıya bölerek çalışma süresini azaltır. Örneğin: parallelism: 4, testleri 4 paralel kapsayıcıda çalıştırır. CircleCI, test dosyalarını otomatik olarak kapsayıcılar arasında dağıtır. circleci tests glob komutu test listesini toplar ve circleci tests split bunları eşit olarak dağıtı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
İşte iki iş (build ve test) içeren bir Android projesi için tam bir CircleCI yapılandırması. Yapılandırma şunları içerir: Android SDK ile Docker executor, Gradle önbellekleme ve paralel test yürütme. Yapıtlar (artifacts) indirilmek üzere kaydedilir. build-and-test iş akışı, ana dala her push'ta her iki işi de çalıştırı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 ve alternatifler arasında seçim yaparken — ekibiniz GitHub kullanıyorsa, GitHub Actions daha basit bir seçim olabilir. CircleCI, esnek paralel test yürütme, özel executor ortamı yapılandırması ve ayrıntılı derleme istatistikleri gerektiren ekipler için tercih edilir. CircleCI Insights, iş akışı performans metrikleri (ortalama derleme süresi, eğilimler ve darboğazlar) içeren bir pano sağlar. Insights, uzun süreli işleri belirlemeye ve optimize etmeye yardımcı olur. CircleCI API, programlı olarak iş akışlarını yönetmenize, derlemeleri tetiklemenize ve metrikler almanıza olanak tanır.
Güvenli sır yönetimi için CircleCI, Contexts — kuruluş düzeyinde adlandırılmış ortam değişkenleri kümeleri — destekler. Contexts, rol tabanlı erişimle korunur: yalnızca belirli ekipler belirli bir bağlamı kullanabilir. Örneğin, production-deploy bağlamı, App Store Connect anahtarlarını içerir ve yalnızca lider geliştiriciler tarafından kullanılabilir. Onay kapılarıyla birleştiğinde bu, kapsamlı bir CI/CD güvenlik sistemi oluşturur.
CircleCI Orb Registry, çeşitli CI/CD görevleri için yüzlerce hazır paket içerir. Mobil geliştirme için temel orbs'lar şunları içerir: circleci/android, circleci/ios, circleci/flutter, laurencerussell/firebase-app-distribution. Her orb sürümlendirilir ve belgelenir. Orbs'lar herkese açık (herkes tarafından kullanılabilir) veya özel (yalnızca kuruluşunuz için) olabilir.
Orbs kullanımı yapılandırmayı 5–10 kat azaltır. Örneğin, circleci/android orb'u, önceden yüklenmiş SDK ve restore-gradle-cache, save-gradle-cache komutlarıyla android/default executor'ı sağlar. circleci/ios orb'u, Xcode ile bir executor ve fastlane aracılığıyla kod imzalama komutlarını içerir. Orbs'lar kolayca birleştirilebilir: derleme için android orb ve bildirimler için slack orb ekleyin.
CircleCI ayrıca yerleşik test raporu desteği sunar. Store_test_results, JUnit, XCTest ve diğer biçimlerdeki test sonuçlarını otomatik olarak ayrıştırır ve görselleştirir. Mobil projeler için bu, başarısız testlerin, çalışma zamanı eğilimlerinin ve derleme kararlılığı geçmişinin merkezi olarak görüntülenmesi anlamına gelir ve kod kalitesi bakımını basitleştirir.
orbs:
ios: circleci/ios@2.0.0
jobs:
build-and-test:
executor: ios/default
steps:
- checkout
- ios/install-dependencies
- ios/build-and-test
Özel bir orb yayınlama, CircleCI CLI aracılığıyla kullanılabilir. circleci orb create ve circleci orb publish komutları orb'u kayıt defterine yükler. Bu, bir kuruluş içinde CI/CD'yi standartlaştırmak için kullanışlıdır — bir kez oluşturun, tüm projelerde kullanın.
Sıkça Sorulan Sorular
CircleCI, bir kapsayıcı için ayda 6000 dakika içeren ücretsiz bir plan sunar. Performance Plan (ayda $30), 10 paralel iş ve 14.000 dakika içerir. Scale Plan — sınırsız paralellik ile özel fiyatlandırma.
Orbs, resmi kayıt defteri aracılığıyla dağıtılan yeniden kullanılabilir YAML yapılandırma paketleridir. Popüler araçlar ve platformlar için hazır jobs, commands ve executors içerirler.
Evet, CircleCI, önceden yüklenmiş Xcode (sürüm 14, 15, 16) ile macOS executor'ı destekler. iOS 17 ve 18, watchOS ve tvOS için imajlar mevcuttur. Kod imzalama, fastlane match veya manuel olarak yapılandırılır.
İşte parallelism: N belirtin — CircleCI testleri N kapsayıcıya böler. circleci tests split komutu testleri eşit olarak dağıtır. Testler paralel olarak çalışır ve toplam süre, kapsayıcı sayısıyla orantılı olarak azalır.
CircleCI daha esnek executor'lar (Docker, macOS, Machine, Windows), gelişmiş bir orb sistemi, yerleşik paralel test bölme ve ayrıntılı derleme yapıtları sunar. GitHub Actions, GitHub entegrasyonu ve basitlikte öne çıkar.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.
Ayrıca okuyun