2-bo‘lim

Birinchi workflow faylini yozish

.github/workflows papkasi, eng sodda workflow fayli, uni ishga tushirish va jurnalni o'qish.

🕑 11 daqiqa o‘qish 📄 893 so‘z 👁 1 marta ko‘rilgan
Ushbu bo‘lim mundarijasi
  1. Fayl qayerda turadi
  2. Eng sodda workflow
  3. Fayl qismlari
  4. Bir nechta qadam
  5. O'z kodingizni ishga tushirish
  6. run va uses farqi
  7. Jurnalni o'qish
  8. Birinchi kunning xatolari
  9. Ishga tushirishni qo'lda boshlash
  10. Xulosa

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:

Natija
loyiha/
├── .github/
│   └── workflows/
│       ├── salom.yml
│       └── testlar.yml
├── salom.js
└── README.md
QoidaIzoh
Papka nomiAniq .github/workflows - boshqa joyda ishlamaydi
Kengaytma.yml yoki .yaml
Fayl soniCheklanmagan - har biri mustaqil ishlaydi
Nuqta bilan boshlanishi.github - yashirin papka, ls -a bilan ko'rinadi

Eng sodda workflow #

.github/workflows/salom.yml faylini yarating:

YAML
name: Salom

on: push

jobs:
  salomlash:
    runs-on: ubuntu-latest
    steps:
      - name: Ekranga yozish
        run: echo "Salom, CI!"

Uni odatdagidek yuboring:

Terminal
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:

Natija
Salom, CI!

Tabriklaymiz - bu sizning birinchi quvuringiz.

Fayl qismlari #

Workflow faylining tuzilishi workflow butun fayl - nomi va qachon ishlashi name, on job alohida, toza mashinada bajariladigan ish bo'lagi runs-on step bitta buyruq yoki bitta tayyor amal (action) run, uses Ichma-ich: bitta workflow - bir nechta job, bitta job - bir nechta step
Uch qavat: workflow qachon ishlashini, job qayerda, step nima qilishini aytadi

Endi har bir qatorni ko'rib chiqamiz:

QatorMa'nosi
name: SalomActions ro'yxatida ko'rinadigan nom. Yozilmasa fayl nomi ishlatiladi
on: pushQachon ishlashi. Bu yerda: har bir push da
jobs:Ishlar ro'yxati boshlanadi
salomlash:Job ning identifikatori - nomini o'zingiz tanlaysiz
runs-on: ubuntu-latestQaysi mashinada ishlaydi
steps:Qadamlar ro'yxati
- name:Qadamning jurnaldagi sarlavhasi
run:Bajariladigan buyruq
runs-on nimani bildiradi

GitHub 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:

YAML
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:

Natija
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
Bir qadamda bir nechta buyruq

Har bir buyruq uchun alohida qadam yozish shart emas. Vertikal chiziq (|) ko'p qatorli matn boshlaydi:

YAML
      - 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:

JavaScript
console.log("Salom, CI!");

Uni CI da ishga tushirish uchun bitta muhim qadam kerak - kodni runner'ga nusxalash:

YAML
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
Natija
Salom, CI!
checkout ni unutish - eng ko'p uchraydigan birinchi xato

Runner sizning kodingiz bilan bo'sh boshlanadi. actions/checkout qadamisiz repozitoriy fayllari umuman yo'q bo'ladi va shunday xato chiqadi:

Natija
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 #

KalitNima qiladiMisol
runRunner'da shell buyrug'ini bajaradirun: npm test
usesBoshqalar yozgan tayyor amalni chaqiradiuses: 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:

Actions bo'limida nima ko'rinadi Ishga tushirishlar CI: birinchi workflow testlarni qo'shdim hozir ishlayapti har bir push - yangi qator Joblar salomlash testlar yonma-yon ishlaydi Qadamlar jurnali ▸ Set up job ▸ Kodni olish ▸ Dasturni ishga tushirish ▸ Complete job har birini ochib ko'rish mumkin
Uchta qatlam: ishga tushirish -> job -> qadam jurnali

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 da bo'shliq - sintaksis

YAML tuzilmani chekinish bilan belgilaydi. Bitta ortiqcha probel - va fayl umuman o'qilmaydi:

Natija
Invalid workflow file: .github/workflows/salom.yml#L7
You have an error in your yaml syntax on line 7

Uchta qoida yetarli:

QoidaTo'g'riNoto'g'ri
Faqat probel2 ta probelTabulyatsiya (Tab)
Bir xil chuqurlikHar qavat 2 probelBir joyda 2, boshqasida 4
Ro'yxat belgisi- name:-name: (probelsiz)

Muharriringizda tab o'rniga probel qo'yishni yoqing - bu muammoning yarmini yo'q qiladi.

Faylni yuborishdan oldin tekshirish

Har bir xatoni push qilib tekshirish zerikarli. Ikki yo'l bor:

  1. Muharrirga YAML kengaytmasini o'rnating - u xatoni yozayotganda ko'rsatadi.
  2. actionlint vositasidan 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:

YAML
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.

Amaliy topshiriq
  1. ci-mashq repozitoriysida .github/workflows papkasini yarating.
  2. Yuqoridagi salom.yml faylini qo'shib, push qiling.
  3. Actions bo'limida ishga tushirishni toping va jurnalni oching.
  4. Set up job qadamini ochib, runner qaysi operatsion tizimda ishlaganini yozing.
  5. Faylga yana ikkita qadam qo'shing: pwd va ls -la.
  6. salom.js faylini yaratib, uni node salom.js bilan ishga tushiring.
  7. actions/checkout qadamini ataylab o'chirib, chiqqan xatoni o'qing.
  8. Uni qaytarib qo'ying va ishga tushirish yana yashil bo'lishiga ishonch hosil qiling.
  9. YAML da bitta qatorni ataylab noto'g'ri chekintiring va xato xabarini yozib oling.
  10. workflow_dispatch qo'shib, quvurni tugma orqali ishga tushiring.

Xulosa #

  • Workflow fayllari faqat .github/workflows papkasida 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@v4 dan boshlanadi.
  • Amal versiyasini (@v4) doim yozing - aks holda xatti-harakat kutilmaganda o'zgaradi.
  • YAML da tabulyatsiya ishlatilmaydi, faqat probel.
  • Set up job va Complete job qadamlarini GitHub o'zi qo'shadi.
  • workflow_dispatch qo'lda ishga tushirish tugmasini beradi.

Keyingi bo'limda quvurni qachon ishga tushirishni boshqaradigan hodisalar va triggerlarni batafsil ko'ramiz.

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.