AXV

Continuous Integration (CI/CD) tushunchasi

Build va test avtomatlashtirish, pipeline, GitHub Actions

10-sinfAdvanced Android4-hafta · 12-dars

Bugun nimani o'rganamiz?

CI

Kodni tez-tez qo'shish va avtomatik tekshirish

CD

Delivery va Deployment: ilovani yetkazish

GitHub Actions

YAML fayl bilan pipeline sozlash

01

Continuous Integration

Kodni doimiy qo'shish va avtomatik tekshirish

Qo'lda ishlashning muammosi

Fayl unutildi

Build qilishda muhim fayl tushib qoldi

Test o'tkazilmadi

Xato foydalanuvchigacha yetib bordi

Mos kelmadi

Boshqalar bilan moslashmagan kod push qilindi

Har bosqichda inson xatosi bo'lishi mumkin. Jamoa katta bo'lsa, xatolar ko'payadi.

CI qanday ishlaydi

Push / PR Avtomatik tizim build, test, lint Muvaffaqiyat Xato: xabar

Qismni bosing. Xato topilsa, tizim dasturchiga darhol xabar beradi.

Haftada bir marta yoki har commitda?

Kam-kam birlashtirish

Uch dasturchi (API, UI, ma'lumotlar bazasi) haftada bir qo'shsa, ulkan konfliktlar chiqadi.
VS

CI: doimiy

Har kuni, hatto har commitda tekshiriladi. Konfliktlar kichik bosqichda topiladi.

Insho analogiyasi

Uch o'quvchi bitta insho yozmoqda. Oy oxirida birlashtirsa, chalkash chiqadi. Har kuni birlashtirsa, xatolar tez ko'rinadi. CI ham shunday: kod doimiy birlashtiriladi.
  1. Har kim o'z paragrafini yozadi
  2. Har kuni birlashtiriladi
  3. Xato kichikligida tuzatiladi
02

CD va pipeline

Ilovani tayyorlash, nashr qilish va avtomatlashtirish

Delivery va Deployment

Continuous Delivery

CI davomi: ilovani tayyorlash, sinovga chiqarish va nashr jarayonlarini avtomatlashtiradi. Ilova doim tayyor turadi.

Continuous Deployment

Jarayonni yanada rivojlantiradi: ilova foydalanuvchilarga avtomatik yetkaziladi.

Misol: mobil o'yinlar deyarli har hafta yangilanadi. Pastga

Zavod analogiyasi

Telefon zavodida har detal (displey, korpus, protsessor) tekshiruvdan o'tadi: bu Continuous Integration. Tayyor telefonni bozorga chiqarish: Delivery va Deployment.

Android pipeline

Checkout SDK/JDK Build Test Natija

Pipeline: jarayonlar ketma-ketligi. Hammasi avtomatik, qo'lda ish yo'q.

CI/CD xizmatlari

GitHub ActionsGitLab CI/CDBitbucket PipelinesJenkinsCircleCIAzure DevOps

Har biri Git repozitoriyasi bilan bog'liq holda ishlaydi.

Qaysi testlar pipeline'da?

Unit

ViewModel va Repository funksiyalari

Integration

Qismlar birga ishlashi

UI

Compose, Activity, Fragment

Performance

Resurslardan foydalanish

CI MR/PR ni rad etadi

PR ochildi Testlar O'tdi: merge Yiqildi: rad

"Kodim to'g'ri ishlayapti" degan xayol bo'lishi mumkin, CI real tekshiruv qiladi.

03

GitHub Actions

YAML konfiguratsiya fayli: build, test, deploy

Workflow: qachon ishga tushadi


name: Android CI
on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

Fayl .github/workflows papkasida turadi. on: push va PR hodisalari.

Workflow: nima bajariladi


jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Set up JDK
        uses: actions/setup-java@v3
        with:
          distribution: 'temurin'
          java-version: '17'
      - name: Build with Gradle
        run: ./gradlew build

YAML bosqichlari

1. Checkout

Loyiha fayllari yuklanadi.

2. JDK

Java 17 (temurin) o'rnatiladi.

3. Build

./gradlew build ilovani yig'adi.

4. Natija

Muvaffaqiyat yoki xato ko'rsatiladi.

CD: release workflow


name: Release Build
on:
  push:
    tags: [ 'v*' ]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Build Release
        run: ./gradlew bundleRelease
      - name: Upload to Play Store
        uses: r0adkll/upload-google-play@v1

Qisqartirilgan nusxa. Pastga: Secrets

Secrets: maxfiy ma'lumotlar

  • API kalitlari, tokenlar, maxfiy fayllar kodda turmaydi
  • GitHub Actions va GitLab CI'da "Secrets" bo'limi bor
  • Ular shifrlangan holda saqlanadi
  • Tasodifan repozitoriyaga tushib qolishining oldi olinadi

Fayldagi secrets.PLAY_STORE_KEY shu bo'limdan olinadi.

Qaysi biri CI, qaysi biri CD?

PR ochilganda avtomatik build va unit test ishga tushishi nima?

CI: kod qo'shilgan zahoti avtomatik tekshiriladi. Deployment esa ilovani foydalanuvchiga yetkazadi.

Atamalarni aylantiring

CI

bosing

Kodni doimiy qo'shish va avtomatik tekshirish.

CD

bosing

Ilovani tayyorlash va yetkazishni avtomatlashtirish.

Pipeline

bosing

Avtomatik bajariladigan jarayonlar ketma-ketligi.

Odatiy xatolar

API kalit yoki token'ni to'g'ridan-to'g'ri YAML yoki kodga yozish.
Kodni oyda bir marta birlashtirish: konfliktlar to'planadi.
Pipeline yiqilganda e'tiborsiz qoldirish.
Yechim: tez-tez integratsiya, Secrets va qizil pipeline'ni darhol tuzatish.

Raqamlarda bugungi dars

0
bosqich: build, test, deploy
0
test turi
0
CI/CD xizmati

Amaliy topshiriq 30 daqiqa

OsonCI, CD va Deployment atamalarini o'z so'zingiz bilan 1 jumlada yozing.
O'rtaRepozitoriyada .github/workflows/android.yml yarating va "Android CI" workflow'ini yozing.
QiyinWorkflow'ga unit test qadamini qo'shing va yiqilgan test pipeline'ni qanday to'xtatishini tushuntiring.

Xulosa

CI

Tez-tez birlashtirish, avtomatik build va test.

CD

Tayyorlash va yetkazishni avtomatlashtirish.

YAML

GitHub Actions: on, jobs, steps.

Secrets

Maxfiy ma'lumotlar shifrlangan saqlanadi.

Uyga vazifa va anons

1. Workflow yozing

O'z loyihangiz uchun Android CI YAML faylini yozing.

2. Tahlil

CI va CD farqini va afzalliklarini yozing.

Keyingi hafta: build.gradle faylining asosiy tuzilmasi va modullararo bog'lanishi.