Build Pipeline mobil inkişafda — mahiyyəti, mərhələləri və qurulması

Müəllif: IT Sectr Dərc olunub: 2026-04-12 Oxuma vaxtı: 8 dəq

Build Pipeline (qurma boru kəməri) — kodun commit anından yerləşdirməyə hazır artefakta qədər keçdiyi avtomatlaşdırılmış mərhələlər ardıcıllığıdır. Pipeline kompilasiya, testlərin icrası, statik analiz və buraxılış paketinin hazırlanmasını əhatə edir. Google Cloud DORA, 2025 məlumatlarına görə, yaxşı qurulmuş pipeline-a malik komandalar avtomatlaşdırması olmayan komandalarla müqayisədə 440 dəfə daha sürətli dəyişiklik çatdırılmasına nail olurlar.

Əsas məqamlar

  • Build Pipeline — bir sıra yoxlamalar vasitəsilə mənbə kodunu yerləşdirməyə hazır artefakta çevirən avtomatik konveyer xəttidir.
  • Əsas mərhələlər — kodun götürülməsi, asılılıqların quraşdırılması, kompilasiya, vahid testləri, inteqrasiya testləri, statik analiz, buraxılışın qurulması.
  • Pipeline-in vizuallaşdırılması komandaya hər bir qurmanın hansı mərhələdə olduğunu görməyə və darboğazları tez tapmağa imkan verir.
  • Paralel mərhələlər müstəqil yoxlamalar hesabına pipeline-in keçidini əhəmiyyətli dərəcədə sürətləndirir.
  • Fail-fast prinsipi — pipeline ilk xətada dayanmalı, qalan mərhələlərə resurs sərf etməməlidir.

Build Pipeline nədir

Build Pipeline (qurma boru kəməri) — hər kod dəyişikliyində avtomatik icra olunan rəsmiləşdirilmiş addımlar ardıcıllığıdır. Hər addım keyfiyyətin müəyyən aspektini yoxlayır: kompilyasiya oluna bilmə, testlərin düzgünlüyü, zəifliklərin olmaması, kod stilinə uyğunluq. Əgər hər hansı addım xəta ilə bitərsə, pipeline dayanır.

Pipeline konsepsiyası istehsal xəttindən gəlir — fabrikdə olduğu kimi, hər stansiya məhsula dəyər əlavə edir. Proqram təminatı inkişafında hər mərhələ kodun buraxılışa hazır olduğuna əminlik əlavə edir. Müasir pipeline-lar kod kimi müəyyən edilir (Pipeline as Code) və layihə ilə birlikdə Git repozitoriyasında saxlanılır.

Continuous Delivery Foundation, 2025-ə görə, yetkin build pipeline commit-dən buraxılışa qədər vaxtı həftələrdən dəqiqələrə endirir. Buna tam avtomatlaşdırma və müstəqil mərhələlərin paralel icrası ilə nail olunur.

Pipeline as Code

Veb interfeysi vasitəsilə konfiqurasiya əvəzinə, müasir pipeline YAML və ya Groovy fayllarında təsvir olunur. Jenkinsfile, `.gitlab-ci.yml`, `.github/workflows/build.yml` — Pipeline as Code nümunələridir. Üstünlükləri: versiyalaşdırma, code review, təkrarlana bilmə.

Deklarativ vs Skript Pipeline

Jenkins-də iki sintaksis mövcuddur. Deklarativ — daha sadə, aydın stages/steps strukturu ilə. Skript — daha çevik, Groovy əsaslı. Əksər layihələr üçün daha oxunaqlı və proqnozlaşdırıla bilən olduğu üçün deklarativ yanaşma tövsiyə olunur.

Tipik pipeline mərhələləri

Mobil tətbiq üçün tipik build pipeline bir neçə əsas mərhələni əhatə edir. Hər mərhələ öz funksiyasını yerinə yetirir və potensial problemləri erkən mərhələdə süzgəcdən keçirir.

Checkout və asılılıqların quraşdırılması

Pipeline repozitoriyanın klonlanması ilə başlayır. Sonra asılılıqlar quraşdırılır: Gradle/Maven paketləri, CocoaPods, SPM (Swift Package Manager), npm paketləri. Bu mərhələdə keşdən istifadə sonrakı qurmaları 50-70% sürətləndirir.

Linting və statik analiz

Kompilasiyadan əvvəl kod keyfiyyətinə nəzarət alətləri işə salınır: Kotlin üçün Detekt və ya ktlint, Swift üçün SwiftLint, JavaScript üçün ESLint. Onlar kod stilinə uyğunluğu yoxlayır və potensial səhvləri kod analizi səviyyəsində tapır.

Kompilasiya və vahid testləri

Kod ikili formada kompilyasiya olunur, paralel olaraq vahid testləri işə salınır. Android üçün bu `./gradlew testDebugUnitTest`, iOS üçün — `xcodebuild test -scheme App -destination 'platform=iOS Simulator'`. Testlərin uğursuzluğu dərhal pipeline-i dayandırır.

yaml
name: Mobile Build Pipeline
on: [push, pull_request]

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: ./gradlew detekt

  unit-tests:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: ./gradlew testDebugUnitTest
      - run: ./gradlew jacocoTestReport

  build-release:
    needs: [lint, unit-tests]
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: ./gradlew assembleRelease
      - uses: actions/upload-artifact@v4
        with:
          name: release-apk
          path: app/build/outputs/apk/release/app-release.apk

İnteqrasiya və UI testləri

Uğurlu kompilasiyadan sonra tətbiqin işə salınmasını tələb edən testlər yerinə yetirilir: Android üçün Espresso, iOS üçün XCTest/XCUITest, React Native üçün Detox. Bu mərhələdə artefakt simulyatorda və ya ferma xidmətləri (Firebase Test Lab, BrowserStack, Sauce Labs) vasitəsilə real cihazda yerləşdirilir.

Pipeline konfiqurasiyası

Pipeline-in düzgün konfiqurasiyası bütün CI/CD prosesinin səmərəliliyini müəyyən edir. Konfiqurasiyaya daxildir: trigger-lərin seçimi, paralel və ardıcıl mərhələlərin müəyyən edilməsi, parametrləşdirmə və xarici xidmətlərlə inteqrasiya.

Pipeline trigger-ləri

Əsas trigger-lər: repozitoriyaya push, pull request (xüsusilə avtomatik yoxlamalarla code review üçün), Git teqinin yaradılması (buraxılış qurması üçün), cədvəl (nightly build). Pull request trigger — komanda işi üçün ən praktikdir, çünki kodu birləşdirməzdən əvvəl problemləri aşkarlayır.

Paralel və ardıcıl mərhələlər

Müstəqil mərhələlər (linting, müxtəlif OS versiyalarında test) sürətləndirmək üçün paralel icra olunmalıdır. Asılı olanlar — ardıcıl. Müasir CI sistemləri avtomatik idarə edir paralel tapşırıqları, onları mövcud agentlər arasında bölüşdürərək.

  • Fail-fast — istənilən paralel qolda xəta olduqda dərhal uğursuzluğu konfiqurasiya edin
  • Matrix build — bir qurmanın bir neçə konfiqurasiyada (API səviyyəsi, Xcode versiyası) işə salınması
  • Conditional stages — bəzi mərhələlər yalnız müəyyən qollar üçün yerinə yetirilir (məsələn, yalnız main-dən yerləşdirmə)

Build Pipeline optimallaşdırılması

Uzun pipeline inkişaf dövrünü ləngidir və komandanın motivasiyasını azaldır. Qurma vaxtının optimallaşdırılması — build pipeline ilə işləyərkən DevOps mühəndisinin əsas vəzifələrindən biridir.

Asılılıqların keşləşdirilməsi

Gradle Build Cache əvvəlki kompilasiyaların nəticələrini saxlayır. Modulun mənbə kodu dəyişməyibsə, təkrar kompilyasiya olunmur. Eyni şəkildə Swift və Kotlin-də inkremental kompilasiya işləyir. Keşin ölçüsü gigabaytlara çata bilər, lakin vaxta qənaət 30% ilə 70% arasındadır.

Testlərin paralel icrası

Vahid testləri bir neçə agentdə eyni vaxtda işə salına bilər, test siniflərini bölüşdürərək. Sharding — testlərin qruplara (shards) bölünməsi texnikası. GitHub Actions `strategy.matrix`-i dəstəkləyir, Jenkins — Parallel Test Executor, Gradle — `--parallel --max-workers`.

Pipeline qatlarının minimallaşdırılması

Hər əlavə mərhələ vaxt əlavə edir. Pipeline-i mütəmadi analiz edin: hansı mərhələləri birləşdirmək olar? Məsələn, linting kompilasiyadan əvvəl deyil, onunla paralel işə salına bilər. İnteqrasiya testləri — yalnız pull request üçün, hər commit üçün deyil.

groovy
pipeline {
    agent any
    options {
        timestamps()
        timeout(time: 30, unit: 'MINUTES')
    }
    stages {
        stage('Parallel Checks') {
            parallel {
                stage('Lint') {
                    steps { sh './gradlew detekt' }
                }
                stage('Unit Tests') {
                    steps { sh './gradlew test' }
                }
            }
        }
        stage('Build') {
            steps { sh './gradlew assembleRelease' }
        }
    }
}

Build Pipeline təhlükəsizliyi

Build pipeline proqram təminatı təchizat zəncirinin kritik elementidir və onun təhlükəsizliyi nəzərdən qaçırılmamalıdır. Pipeline-in kompromizasiyası buraxılış artefaktına zərərli kodun daxil edilməsinə gətirib çıxara bilər ki, bu da tətbiqin bütün istifadəçilərinə təsir edəcək.

Pipeline-lara təchizat zənciri hücumları

Tanınmış hücumlar: SolarWinds (2020), Codecov (2021), 3CX (2023) — hamısı CI/CD pipeline-larında zəifliklərdən istifadə edirdi. Ümumi vektor — təcavüzkar qurma serverinin etimadnamələrinə giriş əldə edir və qurma mərhələsində kodu dəyişdirir. Nəticə — qanuni sertifikatla imzalanmış zərərli buraxılış.

Etimadnamələrin qorunması

Heç vaxt saxlamayın imza açarlarını, API tokenlərini və şifrələri repozitoriyada və ya CI sisteminin açıq formada mühit dəyişənlərində. CI sisteminin sirlərindən (GitHub Secrets, GitLab CI Variables), HashiCorp Vault, AWS Secrets Manager istifadə edin. Sirlərə girişi minimuma endirin — hər pipeline yalnız öz konkret addımları üçün lazım olan açarları almalıdır.

Pipeline artefaktlarının yoxlanılması

Pipeline-dan çıxan hər artefakt kriptoqrafik olaraq imzalanmalı və attestasiya — mənşə haqqında şəhadətnamə (provenance) ehtiva etməlidir. Alətlər: SLSA framework, in-toto attestation, konteynerlərin imzalanması üçün cosign. İmzanın yoxlanılması hər hansı mühitə yerləşdirmədən əvvəl yerinə yetirilməlidir.

yaml
name: Secure Build Pipeline
on: [push]

jobs:
  security-scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Scan dependencies
        run: ./gradlew dependencyCheckAnalyze
      - name: SAST scan
        run: ./gradlew detekt

  sign-attest:
    needs: security-scan
    runs-on: ubuntu-latest
    steps:
      - run: ./gradlew assembleRelease
      - name: Sign APK
        run: jarsigner -keystore ${{ secrets.KEYSTORE }} \
          app-release.apk ${{ secrets.KEY_ALIAS }}
      - name: Generate provenance
        uses: actions/attest-build-provenance@v1

Pipeline monitorinqi və sazlanması

Build pipeline — davamlı monitorinq tələb edən mürəkkəb bir sistemdir. Metriklər olmadan pipeline-in yavaşlayıb-yavaşlamadığını və hansı mərhələnin darboğaz halına gəldiyini müəyyən etmək mümkün deyil.

Pipeline metrikaları

İzləyin: keçid vaxtı (total pipeline duration), hər mərhələnin vaxtı, qəza tezliyi (build failure rate), növbədə gözləmə vaxtı (queue time). Böyük komanda (>20 tərtibatçı) üçün həftə/ay üçün aqreqasiya edilmiş statistika ilə Grafana və ya Datadog-da dashboard qurmaq tövsiyə olunur.

Qəzalarda xəbərdarlıq

Hər pipeline qəzası reaksiya tələb edir. Mesencerlərdə (Slack, Telegram, Discord) xəta loquna keçid və commit müəllifinin göstərilməsi ilə bildirişlər qurun. Kritik qəzalar üçün — PagerDuty və ya Opsgenie eskalasiya ilə.

Pipeline-in lokal sazlanması

Act (GitHub Actions üçün) və ya Jenkins Pipeline Unit Test kimi alətlər pipeline-i commit etmədən lokal olaraq işə salmağa imkan verir. Bu, xüsusilə yeni mərhələlər əlavə edərkən və ya konfiqurasiyanı dəyişdirərkən pipeline-ların inkişafını və sazlanmasını sürətləndirir.

Tez-tez verilən suallar

Build pipeline ilə CI/CD pipeline arasında fərq nədir?

Build pipeline CI/CD pipeline-in bir hissəsidir, kompilasiya və artefaktın hazırlanmasına cavabdehdir. CI/CD pipeline daha genişdir: o, yerləşdirmə, buraxılışdan sonra monitorinq və infrastruktur yoxlamalarını əhatə edir.

Build pipeline nə qədər tez-tez işə salınmalıdır?

Hər repotoriyaya push zamanı. Pull request üçün — birləşdirmədən əvvəl mütləq. Nightly build — hər commit üçün məcburi olmayan uzun testlər (e2e, performance) üçün.

Pipeline təsviri üçün hansı dil daha yaxşıdır?

Yeni layihələr üçün — YAML (GitHub Actions, GitLab CI, Bitrise). Oxunaqlı və sadədir. Groovy (Jenkins) daha güclüdür, lakin dəstəkləmək daha çətindir. Seçim istifadə olunan CI sistemindən asılıdır.

Böyük layihə üçün pipeline vaxtını necə qısaltmaq olar?

Əsas üsullar: asılılıqların keşləşdirilməsi, müstəqil mərhələlərin paralel icrası, testlərin shard edilməsi, hər commit üçün pipeline-dan uzun testlərin çıxarılması, güclü qurma agentlərindən istifadə.

Pipeline test mərhələsində uğursuz olarsa nə etməli?

Loqları analiz edin: hansı test uğursuz oldu və niyə. Test flaky-dirsə, retry mexanizmi əlavə edin. Əgər real səhvdirsə, testi söndürmədən kodu düzəldin. Testləri söndürmək — son çarədir.

Nəticə

  • Build Pipeline — kodu yerləşdirməyə hazır artefakta çevirən avtomatik mərhələlər ardıcıllığı.
  • Əsas mərhələlər — checkout, linting, kompilasiya, test, buraxılış qurması.
  • Pipeline as Code — Git-də konfiqurasiya, versiyalaşdırma, code review və təkrarlana bilməni təmin edir.
  • Pipeline optimallaşdırılması keşləşdirmə, paralel mərhələlər və test sharding vasitəsilə əldə olunur.
  • Fail-fast prinsipi — səhvlərin erkən aşkarlanması qurma serverinin vaxtına və resurslarına qənaət edir.
  • Monitorinq pipeline metrikaları darboğazları müəyyən etməyə və performans deqradasiyasının qarşısını almağa kömək edir.
  • Lokal sazlama (Act, Jenkins Pipeline Unit Test) pipeline-ların inkişafını və testini sürətləndirir.

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.

Layihəni müzakirə et

Həm də oxuyun