Vezérlőpult
27. GitHub Actions alapjai · Eszközök és haladó témák

6. témakör · Eszközök és haladó témák · 27. fejezet

GitHub Actions alapjai

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.

Web + CLIWorkflow-építőYAML-hibakeresőActions-labor16 kvízkérdés

Tanulási célok

1CI/CD és a GitHub Actions

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.

💻 git push
⚡ eseményon: push
🖥️ runnerubuntu-latest
📋 lépésekcheckout, npm ci, npm test
✓ / ✗ eredménycommit, PR, e-mail

2A fogalmak

FogalomJelentésA fájlban
workflowegy automatizált folyamat; egy YAML-fájl a .github/workflows/ mappábanaz egész fájl
event (esemény, trigger)mire induljon: push, pull request, kézi indítás, időzítés…on:
jobegy munkafolyamat-rész, amely egy runneren fut (több job párhuzamosan is futhat)jobs:
runnera virtuális gép, amelyen a job fut (Linux, Windows, macOS)runs-on:
stepegy lépés a jobon belül: egy parancs vagy egy actionsteps:
actionké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önrun:

3Egy workflow-fájl, soronként

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 RUNNER EGY TISZTA GÉP

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.

4Workflow-építő

Kattints össze egy workflow-t! A jobb oldalon rögtön látod a YAML-fájlt, alatta pedig, hogy mit jelent.

Workflow-építő

Mikor fusson? (on)
Milyen gépen? (runs-on)
Lépések (steps)
.github/workflows/ellenorzes.yml

        

    5YAML-szabályok és hibák

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

    YAML-hibakereső

    Mi a baj ezzel a workflow-részlettel?

    1 / 8Pontszám: 0
    …

    6Az Actions fül

    7Ellenőrzések a pull requestben

    Ha a workflow a pull_request eseményre is fut, az eredménye a PR merge-dobozában jelenik meg (status check):

    ✓ All checks have passed 1 successful check · Node.js CI / build (pull_request) — Successful in 14s
    ✗ Some checks were not successful 1 failing check · Node.js CI / build (pull_request) — Failing after 12s · Details

    8Titkok és jó gyakorlatok

    9Actions-labor

    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.

    PowerShell + Git

    Windows PowerShell
    Küldetések 0 / 7

      10Feladatok

      Gyakorló feladatok

      ⭐ alap · ⭐⭐ haladó · ⭐⭐⭐ kihívás

      27.1⭐Web

      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.

      27.2⭐

      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.

      27.3⭐⭐CLI

      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.

      27.4⭐⭐Web

      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.

      27.5⭐⭐Web

      Tegyél a README-be állapotjelvényt (badge) a workflow-hoz. Mi történik vele, ha a main-en elbukik egy futás?

      27.6⭐⭐Visual Studio

      Egy C# konzolos projekthez használd a .NET sablont (dotnet build, dotnet test). Hány másodpercig tart egy futás?

      27.7⭐⭐⭐Web

      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?

      11Önellenőrző kvíz

      Ellenőrizd magad!

      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.

      12Fogalomtár

      FogalomJelenté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 Actionsa GitHub beépített automatizálási és CI/CD rendszere
      workflowYAML-fájl a .github/workflows/ mappában: mikor, min, mit futtasson
      event / triggeraz indító esemény: push, pull_request, workflow_dispatch, schedule
      job / stepegy runneren futó munkaegység / annak egy lépése
      actionújrahasznosítható kész lépés (uses: actions/checkout@v4)
      runnera virtuális gép, amelyen a job fut
      status checka workflow eredménye egy commiton / PR-on (✓ / ✗)
      secrettitkos érték a repó beállításaiban: ${{ secrets.NÉV }}

      13Összegzés

      1. CI: minden push/PR után automatikus fordítás és teszt; CD: automatikus telepítés. A GitHubon ezt a GitHub Actions végzi.
      2. Workflow = YAML a .github/workflows/ mappában: on (mikor), jobs → runs-on (min) → steps (uses / run).
      3. YAML: szóközös behúzás, kulcs: érték, listák kötőjellel, pontos kulcsnevek.
      4. Actions fül: futások, jobok, lépések naplóval; a hibát a piros lépés naplójának végén keresd. Kézi indítás: workflow_dispatch.
      5. PR-ban status check; a védett ág kötelezővé teheti a zöld ellenőrzést. Titok csak Secretsben.

      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.