CircleCI: temeller, orbs ve sürekli entegrasyon

Yazar: IT Sectr Yayınlanma: 2026-04-13 Okuma süresi: 8 dk

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 — mobil derlemeler, Docker ve macOS ortamları desteğiyle bulut CI/CD platformu
  • Orb — popüler araçların ve hizmetlerin kurulumunu basitleştiren hazır YAML yapılandırma paketi
  • Executor — iş yürütme ortamı: Docker imajı, Linux VM, macOS veya Windows
  • Parallelism — paralel yürütme için testleri birden çok kapsayıcıya bölme
  • Caching çalıştırmalar arasında bağımlılıkları korur, derleme süresini 3–5 kat azaltır

CircleCI Nedir?

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: Orbs, Executors ve Contexts

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 Türleri

ExecutorUygunDerleme Ortamı
DockerAndroid, BackendLinux kapsayıcı
macOSiOS, macOSXcode ile macOS VM
MachineDocker-in-DockerUbuntu VM
Windows.NET, WinUIWindows 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.

Android ve iOS Projeleri için CircleCI Kurulumu

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.

Android Orb — Hızlı Başlangıç

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.

macOS Executor ile iOS Derlemesi

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 ve Paralel Yürütme

Ö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.

Gradle Önbellekleme Örneği

yaml
- 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/config.yml Yapılandırma Örneği

İş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.

yaml
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

Orbs: Hazır CI/CD Çözümleri

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.

iOS Orb ile Örnek

yaml
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 ne kadar?

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.

CircleCI'da orbs nedir?

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.

CircleCI iOS derlemelerini destekliyor mu?

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.

CircleCI'da paralel test yürütme nasıl çalışı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, GitHub Actions'dan nasıl farklıdı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

  • CircleCI — mobil projeler için Docker, macOS ve Windows executor'ları ile bulut CI/CD platformu
  • Orbs — iş akışı kurulumunu 5–10 kat azaltan hazır YAML yapılandırma paketleri
  • Executor yürütme ortamını tanımlar — Android için Docker, iOS için macOS VM, Docker-in-Docker için Machine
  • Parallelism testleri birden çok kapsayıcıya böler, çalışma süresini orantılı olarak azaltır
  • Caching, restore_cache ve save_cache ile doğru anahtar yapılandırmasıyla derlemeleri 3–5 kat hızlandırır
  • Contexts — projeler arası erişimle kuruluş düzeyinde güvenli sır depolama
  • iOS orb ve Android orb, mobil uygulamaların derlenmesi, test edilmesi ve dağıtımı için hazır işler sağlar

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.

Projeyi tartış

Ayrıca okuyun