Git CI/CD
Git CI/CD
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.ymlfaylidan foydalanadi - CircleCI: GitHub/GitLab bilan ishlaydi, ko‘plab tillar uchun oson sozlanadi
- Travis CI: Ochiq manbali loyihalarda mashhur,
.travis.ymlfaylidan 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

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!
