Azimjon Abdurasulov

CI/CD — Fastlane

Darsliklar (Tutorials)

CI/CD — Fastlane & GitHub Actions — To'liq Darslik

Mundarija

  1. CI/CD nima va nega kerak?
  2. Fastlane asoslari (Fastfile, lanes)
  3. Fastlane Match — Sertifikatlarni boshqarish
  4. Fastlane Gym — Avtomatik Build
  5. Fastlane Pilot — TestFlight'ga yuklash
  6. GitHub Actions asoslari (YAML workflow)
  7. GitHub Actions + Fastlane integratsiyasi
  8. Xcode Cloud — Apple native yechimi
  9. Bitrise va boshqa alternativalar
  10. Real Workflow namunasi
  11. Xulosa

1. CI/CD nima va nega kerak? {#motivatsiya}

  • CI (Continuous Integration): Har bir kod o'zgarishini avtomatik test qilish.
  • CD (Continuous Deployment): Testlar muvaffaqiyatli o'tsa, ilovani avtomatik TestFlight yoki App Store'ga yuborish.

Nega kerak?

  • Har safar testlarni qo'lda ishga tushirish zerikarli va vaqt oladi.
  • Arxiv qilish va yuklash (Archive & Upload) jarayoni 20-30 daqiqa vaqtni oladi. CI/CD bu ishlarni serverda, siz ishingizni davom ettirayotgan paytda bajaradi.

2. Fastlane asoslari {#fastlane}

Fastlane — bu iOS va Android uchun eng mashhur avtomatlashtirish vositasi (Ruby tilida yozilgan). Loyihaga qo'shish: fastlane init

Fastfile: Bu yerda barcha buyruqlar (lane) yoziladi.

lane :beta do
  increment_build_number
  build_app(scheme: "MyApp")
  upload_to_testflight
end

3. Fastlane Match {#match}

Jamoada ishlaganizda, har bir dasturchi o'zicha sertifikat yaratsa — App Store Connect "axlatxona"ga aylanadi. Match barcha sertifikatlarni bitta repozitoriyda (Git) shifrlangan holda saqlaydi va hamma uchun (dasturchilar, CI serverlar) bir xil sertifikatni ta'minlaydi.


4. Fastlane Gym {#gym}

Ilovani .ipa formatida arxiv qilish uchun javobgar.

gym(
  scheme: "MyApp",
  export_method: "app-store",
  output_directory: "./build"
)

5. Fastlane Pilot {#pilot}

Build tayyor bo'lgach, uni TestFlight'ga bir qator kod bilan yuboradi:

pilot(ipa: "./build/MyApp.ipa")

6. GitHub Actions asoslari {#github-actions}

GitHub serverlarida kodni ishga tushirish uchun ishlatiladi. .github/workflows/main.yml faylida konfiguratsiya qilinadi.

on:
  push:
    branches: [ main ]
jobs:
  build:
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v2
      - name: Install dependencies
        run: bundle install
      - name: Run Tests
        run: bundle exec fastlane test

7. GitHub Actions + Fastlane integratsiyasi {#integration}

Bu eng kuchli kombinatsiya. Developer kodni push qiladi → GitHub Actions o'zi macos server ochadi → Fastlane orqali testlarni yurgizadi → Hammasi ok bo'lsa App Store Connect'ga yuklaydi.


8. Xcode Cloud {#xcode-cloud}

Apple'ning o'zining yangi CI/CD tizimi. Xcode ichiga integratsiya qilingan. Sozlash juda oson, lekin GitHub Actions kabi moslashuvchan (flexible) emas va narxi qimmatroq bo'lishi mumkin.


9. Bitrise va boshqa alternativalar {#alternatives}

  • Bitrise: Faqat mobile uchun mo'ljallangan, juda ko'p tayyor "step"lari bor.
  • Codemagic: Flutter va Native iOS uchun oson CI/CD.

10. Real Workflow namunasi {#real-workflow}

  1. Developer feature branch ochadi.
  2. Kod yozadi va Push qiladi.
  3. CI serverda Unit Testlar ishlaydi.
  4. Agar xato bo'lsa, PR (Pull Request) merge qilinmaydi.
  5. Merge qilinganda, main branch avtomatik TestFlight'ga build chiqaradi.

11. Xulosa {#xulosa}

CI/CD — bu sizning vaqtingizni va asabingizni tejaydi.

  • Kichik loyihalarda Fastlane ishlatishni o'rganing.
  • GitHub Actions orqali testlarni avtomatlashtiring.

Vazifa: Fastlane'ni o'rnating va increment_build_number buyrug'ini ishlatib ko'radigan birinchi lane'ingizni yozing! 🚀

Markdown manba

iOS Lessons