GitHub Actions asoslari
GitHub Actions'da hamma narsa YAML fayl orqali boshqariladi. Bu fayllarni repoda saqlaysiz, GitHub esa ularni avtomatik o'qib, kerakli paytda ishga tushiradi.
.github/workflows/ papkasi
GitHub Actions faqat bitta joyni qaraydi: repo ildizidagi .github/workflows/ papkasi. Shu papkadagi har bir .yml (yoki .yaml) fayl alohida workflow hisoblanadi.
my-project/
.github/
workflows/
ci.yml <- birinchi workflow
deploy.yml <- ikkinchi workflow
src/
package.json
.github/workflows bo'lishi shart. Nuqta bilan boshlanadi va GitHub buni maxsus qabul qiladi. Boshqa papkaga qo'ysangiz, hech narsa ishlamaydi.Workflow YAML tuzilishi
Har bir workflow uch asosiy qismdan iborat: name (nomi), on (qachon ishga tushadi), jobs (nima qiladi).
name: CI
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Kodni yuklab olish
uses: actions/checkout@v4
- name: Salom aytish
run: echo "Salom, GitHub Actions!"
on โ hodisa (qachon ishga tushadi)
on kaliti workflow qaysi hodisada ishga tushishini belgilaydi:
# Har qanday push va PR da:
on: [push, pull_request]
# Faqat main shoxchaga push bo'lganda:
on:
push:
branches: [ main ]
# Faqat main ga PR ochilganda:
on:
pull_request:
branches: [ main ]
# Har kuni soat 00:00 (cron) da:
on:
schedule:
- cron: '0 0 * * *'
on: [push, pull_request] yetarli โ har bir push va har bir Pull Request'da tekshiruv ishga tushadi.jobs va runner
jobs ichida bir yoki bir nechta job (vazifa) bo'ladi. Har bir job alohida, toza virtual mashinada โ runnerda ishga tushadi.
runs-on: ubuntu-latestโ eng ko'p ishlatiladigan runner (Linux). Tez va bepul.runs-on: windows-latestโ Windows kerak bo'lsa.runs-on: macos-latestโ macOS (masalan iOS build uchun).
Har bir job toza mashinada boshlanadi: hech qanday oldingi fayl yo'q, hatto sizning kodingiz ham yo'q. Shuning uchun birinchi qadam odatda kodni yuklab olish bo'ladi.
needs: kaliti bilan bog'lanadi.steps va actions/checkout
Har bir job ichida steps โ ketma-ket qadamlar bo'ladi. Qadam ikki xil bo'ladi:
uses:โ tayyor actionni ishlatadi (boshqalar yozgan qayta ishlatiladigan qadam).run:โ terminal buyrug'ini bajaradi (masalannpm test).
Eng muhim tayyor action โ actions/checkout. U repodagi kodni runner mashinasiga yuklab oladi. Deyarli har bir workflow shundan boshlanadi:
steps:
- name: Kodni yuklab olish
uses: actions/checkout@v4
- name: Fayllarni ko'rish
run: ls -la
- name: Bir nechta buyruq
run: |
echo "Bir necha qatorli buyruq"
pwd
node --version
E'tibor bering: @v4 โ bu action'ning versiyasi. Versiyani ko'rsatish tavsiya etiladi, chunki keyingi versiyalar o'zgarib ketishi mumkin.
run: | (quvur belgisi) bir nechta qatorli buyruqlarni yozishga imkon beradi. Har bir qator alohida bajariladi.Birinchi to'liq workflow
Endi hamma qismlarni birlashtiramiz. Quyidagi fayl .github/workflows/ci.yml ga saqlanadi:
name: CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
hello:
runs-on: ubuntu-latest
steps:
- name: Kodni yuklab olish
uses: actions/checkout@v4
- name: Node versiyasini ko'rsatish
run: node --version
- name: Loyiha fayllari
run: ls -la
Bu faylni repoga qo'shib, git push qilganingizdan so'ng GitHub'da Actions yorlig'iga o'ting โ workflow'ning ishga tushganini va har bir qadamning natijasini ko'rasiz.
Natijani qayerda ko'rish
- GitHub repo → yuqoridagi Actions yorlig'i.
- Har bir ishga tushish (run) alohida ro'yxatda ko'rinadi.
- Ustiga bosib, har bir job va qadamning loglarini ochish mumkin.
- Yashil belgi → muvaffaqiyat; qizil belgi → xato (logdan sababni topasiz).
Xulosa
- Workflow fayllari
.github/workflows/papkasida.ymlko'rinishida yashaydi. - Tuzilma:
name,on(hodisa),jobs(vazifalar),steps(qadamlar). runs-on: ubuntu-latestโ toza virtual runner mashinasi.uses:tayyor action ishlatadi,run:terminal buyrug'ini bajaradi.- Deyarli har doim
actions/checkout@v4bilan boshlanadi. - Natijalarni Actions yorlig'ida kuzatasiz.