2-bo‘lim
Birinchi workflow faylini yozish
.github/workflows papkasi, eng sodda workflow fayli, uni ishga tushirish va jurnalni o'qish.
Ushbu bo‘lim mundarijasi
CI ni yoqish uchun hech narsa o'rnatish kerak emas. Repozitoriyga bitta fayl qo'shasiz - GitHub qolganini o'zi qiladi.
Fayl qayerda turadi #
GitHub Actions faqat bitta joyga qaraydi:
loyiha/
├── .github/
│ └── workflows/
│ ├── salom.yml
│ └── testlar.yml
├── salom.js
└── README.md
| Qoida | Izoh |
|---|---|
| Papka nomi | Aniq .github/workflows - boshqa joyda ishlamaydi |
| Kengaytma | .yml yoki .yaml |
| Fayl soni | Cheklanmagan - har biri mustaqil ishlaydi |
| Nuqta bilan boshlanishi | .github - yashirin papka, ls -a bilan ko'rinadi |
Eng sodda workflow #
.github/workflows/salom.yml faylini yarating:
name: Salom
on: push
jobs:
salomlash:
runs-on: ubuntu-latest
steps:
- name: Ekranga yozish
run: echo "Salom, CI!"
Uni odatdagidek yuboring:
git add .github/workflows/salom.yml
git commit -m "CI: birinchi workflow"
git push
Push tugagan zahoti GitHub repozitoriyning Actions bo'limida yangi ishga tushirishni ko'rsatadi. Bir necha soniyadan keyin uning yonida yashil belgi paydo bo'ladi, jurnalda esa quyidagi qator turadi:
Salom, CI!
Tabriklaymiz - bu sizning birinchi quvuringiz.
Fayl qismlari #
Endi har bir qatorni ko'rib chiqamiz:
| Qator | Ma'nosi |
|---|---|
name: Salom | Actions ro'yxatida ko'rinadigan nom. Yozilmasa fayl nomi ishlatiladi |
on: push | Qachon ishlashi. Bu yerda: har bir push da |
jobs: | Ishlar ro'yxati boshlanadi |
salomlash: | Job ning identifikatori - nomini o'zingiz tanlaysiz |
runs-on: ubuntu-latest | Qaysi mashinada ishlaydi |
steps: | Qadamlar ro'yxati |
- name: | Qadamning jurnaldagi sarlavhasi |
run: | Bajariladigan buyruq |
runs-on nimani bildiradiGitHub har bir job uchun toza virtual mashina beradi. ubuntu-latest -
eng ko'p ishlatiladigani; windows-latest va macos-latest ham bor.
«Toza» degani: oldingi ishga tushirishdan hech narsa qolmaydi. Bu yaxshi xabar - muhit har safar bir xil; va yomon xabar - o'rnatgan narsangiz keyingi safar yo'q bo'ladi.
Bir nechta qadam #
Qadamlar yozilgan tartibda, biri tugagach ikkinchisi ishlaydi:
name: Salom
on: push
jobs:
salomlash:
runs-on: ubuntu-latest
steps:
- name: Kim va qayerda
run: whoami && pwd
- name: Tizim haqida
run: uname -a
- name: Node versiyasi
run: node --version
Ubuntu runner'ida bu buyruqlar quyidagicha javob beradi:
runner
/home/runner/work/ci-mashq/ci-mashq
Linux fv-az1057-134 6.8.0-1017-azure #20-Ubuntu SMP x86_64 GNU/Linux
v20.19.5
Har bir buyruq uchun alohida qadam yozish shart emas. Vertikal chiziq
(|) ko'p qatorli matn boshlaydi:
- name: Bir nechta buyruq
run: |
echo "birinchi"
echo "ikkinchi"
echo "uchinchi"
Qadamlarni ajratish jurnalni o'qishni osonlashtiradi: qaysi buyruq
yiqilganini darhol ko'rasiz. Bog'liq buyruqlarni esa birga yozgan
ma'qul - masalan, cd papka va undan keyingi buyruq.
O'z kodingizni ishga tushirish #
Repozitoriyda salom.js fayli bo'lsin:
console.log("Salom, CI!");
Uni CI da ishga tushirish uchun bitta muhim qadam kerak - kodni runner'ga nusxalash:
name: Dasturni ishga tushirish
on: push
jobs:
ishga-tushirish:
runs-on: ubuntu-latest
steps:
- name: Kodni olish
uses: actions/checkout@v4
- name: Dasturni ishga tushirish
run: node salom.js
Salom, CI!
checkout ni unutish - eng ko'p uchraydigan birinchi xatoRunner sizning kodingiz bilan bo'sh boshlanadi. actions/checkout
qadamisiz repozitoriy fayllari umuman yo'q bo'ladi va shunday xato
chiqadi:
Error: Cannot find module '/home/runner/work/ci-mashq/ci-mashq/salom.js'
Qoida: kod bilan ishlaydigan har bir job actions/checkout dan
boshlanadi.
run va uses farqi #
| Kalit | Nima qiladi | Misol |
|---|---|---|
run | Runner'da shell buyrug'ini bajaradi | run: npm test |
uses | Boshqalar yozgan tayyor amalni chaqiradi | uses: actions/checkout@v4 |
Amal (action) - bu qayta ishlatish uchun tayyorlangan qadam. Ular GitHub Marketplace da minglab: kodni olish, Node o'rnatish, keshlash, obraz qurish, xabar yuborish.
@v4 - bu versiya. Uni yozish majburiy emas, lekin doim yozing:
versiyasiz amal keyingi yangilanishda kutilmaganda o'zgarishi mumkin.
Jurnalni o'qish #
Actions bo'limidagi har bir ishga tushirish shunday tuzilgan:
Set up job va Complete job qadamlarini siz yozmaysiz - ularni GitHub
o'zi qo'shadi. Birinchisida runner tayyorlanadi, oxirgisida esa tozalanadi.
Birinchi kunning xatolari #
YAML tuzilmani chekinish bilan belgilaydi. Bitta ortiqcha probel - va fayl umuman o'qilmaydi:
Invalid workflow file: .github/workflows/salom.yml#L7
You have an error in your yaml syntax on line 7
Uchta qoida yetarli:
| Qoida | To'g'ri | Noto'g'ri |
|---|---|---|
| Faqat probel | 2 ta probel | Tabulyatsiya (Tab) |
| Bir xil chuqurlik | Har qavat 2 probel | Bir joyda 2, boshqasida 4 |
| Ro'yxat belgisi | - name: | -name: (probelsiz) |
Muharriringizda tab o'rniga probel qo'yishni yoqing - bu muammoning yarmini yo'q qiladi.
Har bir xatoni push qilib tekshirish zerikarli. Ikki yo'l bor:
- Muharrirga YAML kengaytmasini o'rnating - u xatoni yozayotganda ko'rsatadi.
actionlintvositasidan foydalaning - u workflow fayllarini mahalliy tekshiradi.
VS Code uchun GitHub Actions kengaytmasi sxemani ham biladi: noto'g'ri kalit yozsangiz, darhol tagiga chizadi.
Ishga tushirishni qo'lda boshlash #
Har safar kommit qilmaslik uchun qo'lda ishga tushirish tugmasini qo'shing:
name: Qo'lda ishga tushadigan misol
on:
workflow_dispatch:
jobs:
salomlash:
runs-on: ubuntu-latest
steps:
- run: echo "Bu ishga tushirishni odam boshladi"
Fayl asosiy tarmoqqa tushgach, Actions -> Qo'lda ishga tushadigan misol ->
Run workflow tugmasi paydo bo'ladi. Bu sozlamani sinash uchun eng qulay
usul.
ci-mashqrepozitoriysida.github/workflowspapkasini yarating.- Yuqoridagi
salom.ymlfaylini qo'shib, push qiling. - Actions bo'limida ishga tushirishni toping va jurnalni oching.
Set up jobqadamini ochib, runner qaysi operatsion tizimda ishlaganini yozing.- Faylga yana ikkita qadam qo'shing:
pwdvals -la. salom.jsfaylini yaratib, uninode salom.jsbilan ishga tushiring.actions/checkoutqadamini ataylab o'chirib, chiqqan xatoni o'qing.- Uni qaytarib qo'ying va ishga tushirish yana yashil bo'lishiga ishonch hosil qiling.
- YAML da bitta qatorni ataylab noto'g'ri chekintiring va xato xabarini yozib oling.
workflow_dispatchqo'shib, quvurni tugma orqali ishga tushiring.
Xulosa #
- Workflow fayllari faqat
.github/workflowspapkasida joylashadi. - Fayl uch qavatdan iborat: workflow -> job -> step.
on:qachon ishlashini,runs-on:qayerda ishlashini belgilaydi.run:shell buyrug'ini bajaradi,uses:tayyor amalni chaqiradi.- Har bir job toza virtual mashinada ishlaydi - oldingi ishdan hech narsa qolmaydi.
- Kod bilan ishlaydigan job
actions/checkout@v4dan boshlanadi. - Amal versiyasini (
@v4) doim yozing - aks holda xatti-harakat kutilmaganda o'zgaradi. - YAML da tabulyatsiya ishlatilmaydi, faqat probel.
Set up jobvaComplete jobqadamlarini GitHub o'zi qo'shadi.workflow_dispatchqo'lda ishga tushirish tugmasini beradi.
Keyingi bo'limda quvurni qachon ishga tushirishni boshqaradigan hodisalar va triggerlarni batafsil ko'ramiz.
O‘qish tarixini saqlamoqchimisiz?
Tizimga kirsangiz, tugatgan bo‘limlaringiz saqlanadi va qoldirgan joyingizdan davom etasiz.
Xatolik topdingizmi?
Imlo xatosi, ishlamaydigan kod yoki noto‘g‘ri ma‘lumotni ko‘rsangiz - bizga xabar bering. Har bir xabar administrator tomonidan ko‘rib chiqiladi.