6. témakör · Eszközök és haladó témák · 27. fejezet
Mi lenne, ha minden push után egy robot magától lefordítaná a programot, lefuttatná a teszteket, és szólna, ha valami elromlott? Ez a folyamatos integráció (CI), és a GitHubon a GitHub Actions végzi. Ebben a fejezetben megérted a workflow-fájl felépítését, megírod az elsőt, megtalálod a hibát a naplóban, és beállítod, hogy piros teszttel ne lehessen beolvasztani.
.github/workflows/ mappában.workflow_dispatch).A GitHub Actions a GitHub beépített automatizálási rendszere. A repóban lévő workflow-fájlok írják le, mi történjen és mikor; a GitHub egy virtuális gépen (runner) végrehajtja, és az eredményt ✓ vagy ✗ jellel mutatja a commitok és a PR-ok mellett. Nyilvános repóban ingyenes.
| Fogalom | Jelentés | A fájlban |
|---|---|---|
| workflow | egy automatizált folyamat; egy YAML-fájl a .github/workflows/ mappában | az egész fájl |
| event (esemény, trigger) | mire induljon: push, pull request, kézi indítás, időzítés… | on: |
| job | egy munkafolyamat-rész, amely egy runneren fut (több job párhuzamosan is futhat) | jobs: |
| runner | a virtuális gép, amelyen a job fut (Linux, Windows, macOS) | runs-on: |
| step | egy lépés a jobon belül: egy parancs vagy egy action | steps: |
| action | kész, újrahasznosítható lépés (pl. a repó letöltése, Node.js telepítése) | uses: |
| run | (1) egy parancssori lépés; (2) a workflow egy lefutása az Actions fülön | run: |
A fájl helye: .github/workflows/ellenorzes.yml (a mappanév kötelező, a fájlnév szabad, a kiterjesztés .yml vagy .yaml).
name: Ellenőrzés # a workflow neve az Actions fülön on: # MIKOR fusson? push: branches: [ main ] # minden push a main-re pull_request: # és minden pull request workflow_dispatch: # és kézzel is (Run workflow gomb) jobs: # MIT csináljon? teszt: # a job azonosítója (szabadon választott) runs-on: ubuntu-latest # milyen gépen steps: # lépések, sorban - uses: actions/checkout@v4 # 1. a repó letöltése a runnerre - uses: actions/setup-node@v4 # 2. Node.js telepítése with: node-version: 20 - run: npm ci # 3. függőségek telepítése - name: Tesztek run: npm test # 4. a tesztek — ha elbuknak, a workflow piros
A runneren semmi nincs a te gépedről: ezért kell első lépésként letölteni a repót (actions/checkout), és telepíteni, ami a futtatáshoz kell. Egy lépés akkor
bukik el, ha a parancs hibakóddal áll le (pl. elbukott egy teszt); ilyenkor a job leáll, és a workflow piros lesz.
Kattints össze egy workflow-t! A jobb oldalon rögtön látod a YAML-fájlt, alatta pedig, hogy mit jelent.
kulcs: érték — a kettőspont után szóköz kell.- jellel kezdődő sorok (a steps elemei), vagy röviden: [ main, develop ].# után a sor vége.runs-on, steps, uses, with.Hibás fájlnál a GitHub az Actions fülön jelzi: Invalid workflow file … You have an error in your yaml syntax on line 5, vagy Unexpected value 'step'.
Mi a baj ezzel a workflow-részlettel?
workflow_dispatch, a workflow oldalán kézzel is indítható, választott ágon..Ha a workflow a pull_request eseményre is fut, az eredménye a PR merge-dobozában jelenik meg (status check):
${{ secrets.DEPLOY_TOKEN }}. A naplóban a GitHub csillagokkal takarja.uses: idegen kódot futtat a repód adataival. Használj ismert kiadót (pl. actions/…) és rögzített verziót (@v4).schedule).Anna JavaScriptes kvízjátékában (anna-kovacs/kviz) van egy pontszámító függvény és hozzá teszt. Állíts be CI-t, derítsd ki a naplóból, mi a hiba,
és javítsd PR-ral úgy, hogy a zöld ellenőrzés után olvadjon be. A main ág védett: piros ellenőrzéssel nem lehet beolvasztani.
⭐ alap · ⭐⭐ haladó · ⭐⭐⭐ kihívás
Egy saját repódban hozz létre egy workflow-t a Simple workflow sablonból, commitold, és nézd meg a futását az Actions fülön. Nyisd le a lépések naplóit.
Olvasd el a fejezet workflow-fájlját, és írd le a saját szavaiddal, mikor fut, milyen gépen, és milyen lépésekből áll.
Egy Node.js-es gyakorló projektben (van npm test) készíts CI-workflow-t a gépeden (.github/workflows/ci.yml), töltsd fel, majd szándékosan ronts el egy tesztet, és nézd meg a piros futás naplóját.
Kapcsold be a védett main ágon a Require status checks to pass before merging szabályt, és válaszd ki a workflow jobját. Próbálj beolvasztani egy piros PR-t.
Tegyél a README-be állapotjelvényt (badge) a workflow-hoz. Mi történik vele, ha a main-en elbukik egy futás?
Egy C# konzolos projekthez használd a .NET sablont (dotnet build, dotnet test). Hány másodpercig tart egy futás?
A 26. fejezet weboldalát tedd közzé GitHub Actions-szel: Settings → Pages → Source: GitHub Actions, majd a Static HTML sablon. Mi a különbség a Deploy from a branch módhoz képest?
Az egyválasztós kérdéseknél kattints a válaszra. A többválasztósaknál jelöld be az összes helyeset, majd nyomd meg az Ellenőrzés gombot.
| Fogalom | Jelentés |
|---|---|
| CI (folyamatos integráció) | minden változás automatikus fordítása és tesztelése |
| CD (folyamatos szállítás/telepítés) | a sikeresen tesztelt változat automatikus kiadása, telepítése |
| GitHub Actions | a GitHub beépített automatizálási és CI/CD rendszere |
| workflow | YAML-fájl a .github/workflows/ mappában: mikor, min, mit futtasson |
| event / trigger | az indító esemény: push, pull_request, workflow_dispatch, schedule |
| job / step | egy runneren futó munkaegység / annak egy lépése |
| action | újrahasznosítható kész lépés (uses: actions/checkout@v4) |
| runner | a virtuális gép, amelyen a job fut |
| status check | a workflow eredménye egy commiton / PR-on (✓ / ✗) |
| secret | titkos érték a repó beállításaiban: ${{ secrets.NÉV }} |
.github/workflows/ mappában: on (mikor), jobs → runs-on (min) → steps (uses / run).kulcs: érték, listák kötőjellel, pontos kulcsnevek.workflow_dispatch.A témakör utolsó fejezetében a mentőövek jönnek: hogyan hozol vissza elveszett commitot, hogyan deríted ki, ki írt egy sort, és hogyan emelsz át egyetlen commitot.