CI/CD Pipeline — kodun committən istifadəçiyə çatana qədər keçdiyi avtomatlaşdırılmış mərhələlər ardıcıllığıdır. Mobil tətbiq inkişafında boru kəməri layihənin qurulması, testlərin işə salınması, statik kod analizi, obfuskasiya, imzalama və build-in nəşrini əhatə edir. GitLab DevOps Report, 2025 məlumatlarına görə, yetkin CI/CD Pipeline olan komandalar relizləri avtomatlaşdırması olmayan komandalardan 3,5 dəfə daha tez-tez və 7 dəfə daha sürətli çatdırır.
Əsas məqamlar
CI/CD Pipeline — kodun repozitoridə dəyişikliklərin təsdiqlənməsi anından istehsalata çıxarılana qədər keçdiyi rəsmiləşdirilmiş və avtomatlaşdırılmış proseslər toplusudur. Termin iki təcrübəni birləşdirir: Continuous Integration (fasiləsiz inteqrasiya) və Continuous Delivery (fasiləsiz çatdırılma), bunlar birlikdə proqram təminatı çatdırılması boru kəmərini təşkil edir.
Continuous Integration konsepsiyası 1991-ci ildə Qradi Buç tərəfindən təsvir edilmiş və 2000-ci illərdə Martin Fauler tərəfindən populyarlaşdırılmışdır. Continuous Delivery termini Cez Humbl və David Farleyin “Continuous Delivery” (2010) kitabından sonra möhkəmlənmişdir. Müasir CI/CD Pipeline 2015-ci ildən sonra mobil tətbiq inkişafında de-fakto standarta çevrilmişdir — bulud CI serverlərinin və tətbiq mağazalarının avtomatlaşdırılmasının yaranması ilə.
Mobil tətbiqlərin qurulması və nəşri üçün xüsusi tələbləri var: sertifikatlarla imzalama, bir neçə konfiqurasiya (debug, release, staging), ProGuard/R8 obfuskasiyası, bir neçə build növü (APK, AAB, IPA) və tətbiq mağazaları ilə inteqrasiya. Bu addımların əl ilə yerinə yetirilməsi saatlar çəkir və səhvlərə yol açır — CI/CD Pipeline rutini avtomatlaşdırır.
Android və ya iOS tətbiqi üçün standart CI/CD Pipeline yeddi əsas mərhələdən ibarətdir. Bəzi mərhələlər paralel, digərləri ardıcıl yerinə yetirilir. Mərhələlərin konkret tərkibi texnoloji yığımdan və komandanın yetkinliyindən asılıdır, lakin özəyi dəyişməz qalır.
Boru kəməri repozitorinin klonlanması və asılılıqların quraşdırılması ilə başlayır: Android üçün Gradle/Maven, iOS üçün CocoaPods və ya SPM. Asılılıqların keşləşdirilməsi işə salmalar arasında quraşdırma vaxtını 3–5 dəqiqədən bir neçə saniyəyə endirir — bu optimallaşdırmanı bütün müasir CI xidmətləri dəstəkləyir.
Qurulmadan əvvəl kod linterlər (Android üçün ktlint, detekt, iOS üçün SwiftLint) və statik analizatorlar (Android Lint, SonarQube) tərəfindən yoxlanılır. Lintinq testlər işə salınmazdan əvvəl potensial səhvləri, kod üslubu pozuntularını və köhnəlmiş API-ləri aşkarlayır — fail-fast prinsipi komandanın vaxtına qənaət edir.
Qurma mərhələsində bütün layihə kompilyasiya olunur və artefaktlar yaradılır: Android üçün APK və AAB, iOS üçün IPA. Android üçün Gradle tapşırıqları (assembleDebug, bundleRelease), iOS üçün xcodebuild və ya xcrun istifadə olunur. Qurma CI serverinin təcrid olunmuş mühitində aparılır, bu da təkrarlanmanı təmin edir.
# GitHub Actions-da Android üçün CI/CD Pipeline nümunəsi
name: Android CI Pipeline
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
- uses: gradle/actions/setup-gradle@v4
- run: ./gradlew ktlintCheck detekt
- run: ./gradlew assembleDebug
- run: ./gradlew testDebugUnitTest
- run: ./gradlew assembleRelease
- uses: actions/upload-artifact@v4
with:
name: release-apk
path: app/build/outputs/apk/release/*.apk
Qurmadan sonra vahid testlər, inteqrasiya testləri və UI testləri işə salınır. JUnit və MockK modul testləri üçün, Espresso və Compose Test Android-də UI üçün, XCTest və XCUITest iOS-da. Nəticələr hesabatda dərc olunur və kritik testlər uğursuz olduqda boru kəmərini bloklayır.
Reliz build-ları üçün rəqəmsal sertifikatla imzalama (Android üçün APK Signer, iOS üçün codesign) və kod obfuskasiyası həyata keçirilir. Android üçün ProGuard və ya R8 APK-nın ölçüsünü 15–30% azaldır. İmza açarları CI serverinin sirlərində saxlanılır — heç vaxt repozitoriyə commit edilmir.
Boru kəmərinin son mərhələsi — artefaktların nəşri: APK-nın Google Play Console daxili testinə yüklənməsi, IPA-nın TestFlight-a göndərilməsi və ya Firebase Distribution-da nəşr. Continuous Delivery bu addımın əl ilə təsdiqlənməsini tələb edir, Continuous Deployment isə avtomatik yerinə yetirilir.
Boru kəməri başa çatdıqdan sonra komanda nəticələrlə bildiriş alır: uğur/uğursuzluq, icra vaxtı, artefaktlara keçid. Slack, Telegram və ya email — bildiriş kanalları komandanın ehtiyaclarına görə seçilir. Mərhələ uğursuz olduqda bildirişə konkret səhv jurnalına keçid daxil edilir.
CI və CD terminləri çox vaxt vahid CI/CD anlayışı kimi istifadə olunur, lakin onlar arasında əsaslı fərq var. CI (Continuous Integration) hər kod inteqrasiyasında keyfiyyəti yoxlamağa cavabdehdir, CD (Continuous Delivery) isə bu kodun relizə hazır olmasını təmin edir. Fərqi başa düşmək boru kəmərinin layihələndirilməsində kritik əhəmiyyət daşıyır.
CI hər push və ya pull request zamanı yerinə yetirilir və qurma, statik analiz və testi əhatə edir. CI-nin məqsədi problemləri mümkün qədər tez, onların düzəldilmə dəyəri minimal olduqda aşkar etməkdir. CI keçməzsə — kod əsas budağa daxil olmur. Mobil layihə üçün CI-nin orta icra müddəti 5–15 dəqiqədir.
CD CI-yə reliz hazırlığı mərhələlərini əlavə edir: imzalama, obfuskasiya, reliz qeydlərinin yaradılması, lisenziyaların yoxlanması, testerlər üçün anbarda nəşr. CD təmin edir ki, əsas budaqdakı hər commit bir kliklə istehsalata çıxarıla bilər, lakin relizin özü əl ilə təsdiqlənmə tələb edir.
| Xüsusiyyət | CI | CD |
|---|---|---|
| Tezlik | Hər push-da | Hər main-ə merge-də |
| Məqsəd | İnteqrasiya səhvlərini aşkar etmək | Build-i relizə hazırlamaq |
| Müddət | 5–15 dəqiqə | 10–30 dəqiqə |
| İştirakçılar | Proqramçılar | QA + DevOps + menecerlər |
| Nəticə | Yaşıl/qırmızı status | Test stendində APK/IPA |
Mobil tətbiq inkişafı üçün CI/CD alətləri ekosisteminə bulud xidmətləri, self-hosted həllər və ixtisaslaşmış platformalar daxildir. Alətin seçimi komandanın ölçüsündən, büdcədən və təhlükəsizlik tələblərindən asılıdır. Aşağıda ən populyar variantlar təqdim olunur.
GitHub-da daxili CI/CD, ictimai repozitoriyalar üçün ayda 2000 dəqiqə pulsuz limitlə. GitHub Actions hazır action-ların (marketplace) nəhəng ekosistemi, YAML vasitəsilə sadə konfiqurasiya və GitHub repozitoriyası ilə problemsiz inteqrasiya sayəsində populyardır. Məhdudiyyət — pulsuz tarifdə iOS build-ları üçün Windows runner-larının dəstəklənməməsi.
Self-hosted və bulud həlli güclü YAML konfiquratoru ilə. GitLab CI paralel job-ları, keşləşdirməni, artefaktları və mühitləri (environments) dəstəkləyir. Öz infrastrukturunda yerləşdirmə imkanı və məlumatlar üzərində tam nəzarət sayəsində enterprise seqmentində populyardır.
Açıq mənbəli klassik CI server. Jenkins plaginlər (1800-dən çox) vasitəsilə konfiqurasiya olunur, Groovy formatında Declarative Pipeline dəstəkləyir və istənilən mühitdə işləyir: Windows, macOS, Linux. Xüsusi administrasiya tələb edir, lakin maksimum konfiqurasiya elastikliyi verir.
Sürət və sadəliyə vurğu edən bulud CI xidməti. CircleCI asılılıqları avtomatik keşləşdirir, təcrid olunmuş build-lar üçün Docker obrazlarını və iOS build-ları üçün macOS ilə inteqrasiyanı dəstəkləyir. Qiymətləndirmə kreditlərin sayına əsaslanır — məhsuldarlığı dəyərləndirən komandalar üçün uyğundur.
GitHub Actions və Fastlane istifadə edərək iOS tətbiqi üçün tam CI/CD Pipeline-i nəzərdən keçirək. Fastlane mobil layihələr üçün avtomatlaşdırma alətidir, mürəkkəb qurma, imzalama və nəşr əməliyyatlarını sadə əmrlərə abstraksiya edir.
# Fastfile — iOS CI/CD üçün Fastlane konfiqurasiyası
default_platform(:ios)
platform :ios do
desc "Testləri və lintingi işə sal"
lane :ci do
cocoapods
swiftlint
run_tests(scheme: "MyApp", devices: ["iPhone 16 Pro"])
end
desc "Release-i qurmaq və TestFlight-a yükləmək"
lane :release do
match(type: "appstore")
build_app(scheme: "MyApp", export_method: "app-store")
pilot(skip_waiting_for_build: true)
end
end
Fastlane match sertifikatlar və provisioning profiles idarə edir, build_app IPA qurur, pilot build-i TestFlight-a yükləyir. fastlane release əmri bütün mərhələləri ardıcıl yerinə yetirir: sertifikatları alır, qurur, imzalayır, beta testerlər üçün App Store Connect-ə yükləyir.
Fastlane-in GitHub Actions ilə inteqrasiyası main budağına pull request zamanı tam boru kəmərini avtomatik işə salmağa imkan verir. iOS kodunun kompilyasiyası üçün macOS-da self-hosted runner zəruridir — GitHub pulsuz tarifdə macOS runner-ları təmin etmir.
name: iOS CI/CD Pipeline
on:
pull_request:
branches: [main]
push:
branches: [main]
jobs:
ci-checks:
runs-on: macos-14
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: 3.3
- run: bundle install
- run: bundle exec fastlane ci
- if: github.ref == 'refs/heads/main'
run: bundle exec fastlane release
env:
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
FASTLANE_APPLE_ID: ${{ vars.APPLE_ID }}
Effektiv CI/CD Pipeline qurmaq təkcə alətlərin seçimini deyil, həm də sübut olunmuş təcrübələrə əməl etməyi tələb edir. Düzgün təşkilatlanma olmadan boru kəməri inkişafı sürətləndirmək əvəzinə ləngidən darboğaza çevrilə bilər. Aşağıda yetkin mobil komandaların təcrübəsinə əsaslanan əsas tövsiyələr verilmişdir.
Ən sürətli yoxlamalar (lintinq, vahid testlər) birinci yerinə yetirilir. Onlar uğursuz olarsa — boru kəməri uzun UI testləri və ya reliz qurulması işə salınmadan dayandırılır. Fail fast CI dəqiqələrinə qənaət edir və proqramçıya əks əlaqəni sürətləndirir. İlk uğursuzluğa qədər orta vaxt 2–3 dəqiqədən çox olmamalıdır.
Gradle keşi, CocoaPods keşi və SPM keşi işə salmalar arasında bərpa edilməlidir. GitHub Actions keşləşdirməni actions/cache vasitəsilə, GitLab CI isə cache açar sözü ilə dəstəkləyir. Keşləşdirmə olmadan hər qurma bütün asılılıqları yenidən yükləyir — bu boru kəməri vaxtına 3–10 dəqiqə əlavə edir.
Müstəqil mərhələlər (Android və iOS üçün linter, müxtəlif modulların vahid testləri) paralel job-lar kimi işə salınır. Paralelləşdirmə boru kəmərinin ümumi vaxtını 20–30 dəqiqədən 5–10 dəqiqəyə endirir. Əksər CI xidmətləri paralel job-ları ayrıca hesablayır — tarif seçərkən bunu nəzərə alın.
Boru kəmərinin hər işə salınması təmiz mühitdə aparılır: Docker konteynerində, virtual maşında və ya müvəqqəti runner-da. Təcridetmə əvvəlki build-ların cari build-a təsirinin qarşısını alır. Layihələr arasında ümumi runner-lardan istifadə etməkdən çəkinin — layihələrarası mühitin çirklənməsi qeyri-deterministik nasazlıqlara gətirib çıxarır.
API açarları, imza sertifikatları və tətbiq mağazalarına giriş tokenləri CI serverinin şifrələnmiş anbarında saxlanılır. Heç vaxt sirləri jurnallara, artefaktlara və ya SECRET_ prefiksi olmadan mühit dəyişənlərinə daxil etməyin. iOS sertifikatlarını idarə etmək üçün Fastlane match kimi alətlərdən istifadə edin.
Tez-tez verilən suallar
Adi qurma — proqramçının maşınında yerinə yetirilən əl və ya yarı avtomatik prosesdir. CI/CD Pipeline committən relizə qədər bütün mərhələləri tam avtomatlaşdırır, təcrid olunmuş mühitdə qurmanın təkrarlanmasını təmin edir və problemli dəyişiklikləri istehsalat budağına daxil olmamış bloklayır.
GitHub Actions ilə Android üçün əsas qurulma 2–4 saat çəkir. Testlər, imzalama və deploy ilə tam boru kəməri 2–5 gün aparır. Mürəkkəbliyi macOS runner-larının zəruriliyi və Apple Developer Portal vasitəsilə sertifikatların idarə edilməsi səbəbindən iOS artırır.
Android üçün GitHub Actions (ictimai repozitoriyalar üçün pulsuz), GitLab CI və CircleCI uyğundur. iOS üçün macOS runner məcburidir — CircleCI, Bitrise və ya Mac mini-də self-hosted runner optimaldır. Çarpaz platformalı layihələr (Flutter, React Native) üçün hər iki build növünü dəstəkləyən xidmət seçin.
Bəli, hətta tək proqramçı üçün CI/CD Pipeline faydalıdır: birləşmədən əvvəl testlərin avtomatik yoxlanması, build imzalanmasında insan faktorunun aradan qaldırılması, TestFlight və ya Google Play Console-da avtomatik nəşr. GitHub Actions-un pulsuz limitləri (ayda 2000 dəqiqə) tək layihə üçün kifayətdir.
CI/CD Pipeline nasaz olduqda mərhələ jurnallarını yoxlayın — onlar CI serverinin veb interfeysində mövcuddur. Gradle və ya xcodebuild üçün --verbose bayrağından istifadə edin. Yerli bərpa üçün eyni əmri oxşar mühitdə Docker konteynerində işə salın. Runner-a SSH girişi (dəstəklənirsə) diaqnostikanı sürətləndirir.
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