Git CI/CD

Git CI/CD


ULASHISH

CI/CD nima?

CI/CD — Continuous Integration (uzluksiz integratsiya) va Continuous Deployment/Delivery (uzluksiz joylashtirish/yetkazib berish) degan ma’noni anglatadi.

Bu kodingiz har safar push qilganingizda avtomatik ravishda sinovdan o‘tkazilishi va deploy qilinishini anglatadi.

Bu xatolarni erta aniqlash va funksiyalarni kamroq qo‘l mehnati bilan tezroq yetkazib berishga yordam beradi.


Nega CI/CD’dan foydalanish kerak?

CI/CD kodingizni sinash va deploy qilish jarayonini avtomatlashtiradi. Bu quyidagilarni anglatadi:

  • Xatolarni foydalanuvchilarga yetib borishidan oldin topish
  • O‘zgarishlarni tezroq va xavfsizroq deploy qilish
  • Qo‘lda bajariladigan qadamlar va xatolarni kamaytirish
  • Har bir push bo‘yicha tezkor fikr-mulohaza olish

CI/CD Git bilan qanday ishlaydi?

Har safar Git repozitoriyingizga kod push qilganingizda:

  • CI/CD xizmati (masalan, GitHub Actions yoki GitLab CI) o‘zgarishni aniqlaydi
  • U testlarni ishga tushiradi, loyihangizni build qiladi va avtomatik deploy qilishi mumkin
  • Agar biror narsa muvaffaqiyatsiz tugasa, darhol xabardor qilinasiz

Ish jarayoni misoli

[Developer] --push--> [Git Repository] --triggers--> [CI/CD Pipeline: Test, Build, Deploy]

Mashhur CI/CD xizmatlari

  • GitHub Actions: GitHub’ga o‘rnatilgan, .github/workflows/ papkasidagi YAML fayllardan foydalanadi
  • GitLab CI/CD: GitLab’ga o‘rnatilgan, .gitlab-ci.yml faylidan foydalanadi
  • CircleCI: GitHub/GitLab bilan ishlaydi, ko‘plab tillar uchun oson sozlanadi
  • Travis CI: Ochiq manbali loyihalarda mashhur, .travis.yml faylidan foydalanadi
  • Azure Pipelines: Azure DevOps va GitHub bilan ishlaydi, ko‘plab platformalarni qo‘llab-quvvatlaydi

CI/CD’ning asosiy tushunchalari

Quyida ba’zi muhim atamalar keltirilgan:

  • Workflow (ish jarayoni): Birgalikda ishga tushadigan job’lar ketma-ketligi
  • Job (vazifa): Birgalikda ishga tushadigan step’lar guruhi
  • Step (qadam): Kodni checkout qilish yoki testlarni ishga tushirish kabi bitta vazifa
  • Runner (ishga tushiruvchi): Job’laringizni bajaradigan kompyuter/server
  • Trigger (ishga tushirgich): Workflow qachon ishga tushishini belgilaydi
  • Muhit o‘zgaruvchilari (environment variables): Workflow’ingiz uchun sozlamalar
  • Secrets (maxfiy ma’lumotlar): Parollar yoki API kalitlari

Job’lar

Job — birgalikda ishga tushadigan step’lar guruhi. Har bir job runner’da (serverda) ishlaydi.

Misol: GitHub Actions’dagi job

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      # steps go here


Step’lar (qadamlar)

Har bir step — kodni checkout qilish yoki testlarni ishga tushirish kabi bitta vazifa.

Misol: Step’lar

steps:
  - uses: actions/checkout@v3
  - name: Run tests
    run: npm test

Runner’lar

Runner — job’laringizni bajaradigan kompyuter/server.

Xizmatning runner’laridan foydalanishingiz yoki ko‘proq nazorat uchun o‘zingiznikini sozlashingiz mumkin.

Misol: Runner’ni ko‘rsatish

runs-on: ubuntu-latest

Trigger’lar

Trigger workflow’ingiz qachon ishga tushishini belgilaydi.

Keng tarqalgan trigger’lar — push (har bir push) va pull_request (pull request ochilganda yoki yangilanganda).

Misol: Push yoki pull request’da ishga tushirish

on:
  push:
  pull_request:

Muhit o‘zgaruvchilari va secrets

Sozlamalar uchun muhit o‘zgaruvchilaridan, parollar yoki API kalitlari uchun esa secrets’dan foydalaning.

Maxfiy ma’lumotlarni hech qachon kodingizga to‘g‘ridan-to‘g‘ri yozmang!

Misol: Secret’dan foydalanish

env:
  NODE_ENV: production
  API_KEY: ${{ secrets.API_KEY }}

Build log’lari

CI/CD vositalari har bir job va step uchun log’larni ko‘rsatadi. Nima sodir bo‘lganini ko‘rish yoki xatolarni aniqlash uchun log’larni tekshiring.

GitHub Actions’da workflow ishga tushirilishini bosing va har bir job/step uchun log’larni ko‘ring.


CI’ni o‘tkazib yuborish

Commit xabaringizga [skip ci] qo‘shish orqali commit uchun CI/CD’ni o‘tkazib yuborishingiz mumkin.

Bu hujjatlar yoki kichik o‘zgarishlar uchun foydali.

Misol: CI’ni o‘tkazib yuborish

git commit -m "Update docs [skip ci]"

Nishonlar (badges)

CI/CD holatini ko‘rsatish uchun README’ga nishon (badge) qo‘shing.

Bu boshqalarga so‘nggi build’ingiz muvaffaqiyatli o‘tgan-o‘tmaganini ko‘rish imkonini beradi.

Misol: GitHub Actions nishoni

![CI](https://github.com/username/repo/actions/workflows/ci.yml/badge.svg)

Misol: GitHub Actions workflow fayli (izohlar bilan)

# .github/workflows/ci.yml
# This file tells GitHub Actions how to run CI for your project

name: CI                 # The name of the workflow (shows up in GitHub)
on: [push]               # Trigger: run this workflow on every push
jobs:
  build:                 # Job name (can be anything)
    runs-on: ubuntu-latest   # Runner: use the latest Ubuntu server
    steps:
      - uses: actions/checkout@v3  # Step: check out your code from the repo
      - name: Run tests            # Step: give this step a name
        run: npm test              # Step: run your project's tests
  
  • name: Workflow’ning GitHub’da ko‘rinadigan nomini belgilaydi.
  • on: Workflow qachon ishga tushishini belgilaydi (bu yerda: har bir push’da).
  • jobs: Runner’da ishga tushadigan step’larni guruhlaydi.
  • build: Ushbu job’ning nomi (istalgancha bo‘lishi mumkin).
  • runs-on: Server turini tanlaydi (bu yerda: Ubuntu Linux).
  • steps: Har bir step bitta ishni bajaradi, masalan, kodni checkout qiladi yoki testlarni ishga tushiradi.
  • uses: Tayyor GitHub Action’dan foydalanadi (bu yerda: kodingizni checkout qiladi).
  • name: (steps ichida) Step’ga nom beradi.
  • run: Shell buyrug‘ini ishga tushiradi (bu yerda: testlarni ishga tushirish uchun npm test).

Muammolarni bartaraf etish va eng yaxshi amaliyotlar

  • Agar build muvaffaqiyatsiz tugasa, xato xabarlari uchun log’larni tekshiring.
  • Secrets va muhit o‘zgaruvchilaringiz to‘g‘ri sozlanganiga ishonch hosil qiling.
  • Muvaffaqiyatsiz job’larni CI/CD boshqaruv panelidan qayta ishga tushirishingiz mumkin.
  • Qo‘shimcha yordam uchun CI/CD xizmatingiz hujjatlarini ko‘rib chiqing.
  • Kichikdan boshlang: avval testlarni avtomatlashtiring, tayyor bo‘lgach deploy’ni qo‘shing.
  • Maxfiy ma’lumotlarni kodingizdan tashqarida saqlang va hech qachon API kalitlarini commit qilmang.
  • Build holatini README’da ko‘rsatish uchun nishonlardan foydalaning.

Eslatma: CI/CD xatolarni erta aniqlashga yordam beradi va yetkazib berishni tezlashtiradi. Hatto kichik loyihalar ham avtomatlashtirishdan foyda ko‘rishi mumkin!




W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!