🟡 Intermediate

GitHub Actions — Automatizácia workflows priamo v GitHube

GitHub Actions je natívny CI/CD systém integrovaný priamo v GitHube. Umožňuje automatizovať build, test, deploy a akýkoľvek iný workflow pomocou YAML konfigurácie.


Čo je GitHub Actions

GitHub Actions je event-driven automatizačná platforma. Workflows sa spúšťajú na základe udalostí v repozitári — push, pull request, issue, release, cron schedule alebo manuálny trigger. Všetko sa konfiguruje v súboroch .github/workflows/*.yml.

Kľúčové koncepty:

  • Workflow — celý automatizovaný proces (YAML súbor)
  • Job — skupina krokov bežiacich na jednom runneri
  • Step — jednotlivý príkaz alebo action
  • Action — znovupoužiteľná jednotka (z Marketplace alebo vlastná)
  • Runner — stroj, na ktorom job beží

YAML Syntax a štruktúra

name: CI Pipeline
on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: 'npm'
      - run: npm ci
      - run: npm test

  deploy:
    needs: test
    runs-on: ubuntu-latest
    if: github.ref == 'refs/heads/main'
    steps:
      - uses: actions/checkout@v4
      - run: ./deploy.sh

Workflow podporuje matrix stratégiu pre testovanie na viacerých verziách, concurrency pre deduplikáciu behov a environment pre deployment approvals.

Self-hosted Runners

GitHub ponúka hosted runnery (Ubuntu, Windows, macOS), ale pre špecifické potreby môžete nasadiť self-hosted runner:

  • Beh na vlastnom hardware (GPU, ARM, on-premise)
  • Prístup k interným sieťam
  • Nižšie náklady pri vysokom objeme
  • Konfigurácia cez runs-on: self-hosted s custom labels

Self-hosted runnery vyžadujú správnu bezpečnostnú konfiguráciu — nikdy ich nepoužívajte na public repozitároch bez obmedzení.

Marketplace Actions

GitHub Marketplace obsahuje tisíce hotových actions:

Action Účel
actions/checkout Checkout repozitára
actions/cache Cachovanie dependencies
docker/build-push-action Build a push Docker image
softprops/action-gh-release Vytvorenie GitHub release
slackapi/slack-github-action Notifikácie do Slacku

Vlastné actions môžete vytvoriť ako JavaScript, TypeScript alebo Docker container action.

Best Practices

  • Používajte pinning actions na konkrétny SHA hash (uses: actions/checkout@abc123)
  • Cachujte dependencies pre rýchlejšie buildy
  • Rozdeľte workflow na menšie, znovupoužiteľné reusable workflows
  • Secrets ukladajte do GitHub Secrets, nikdy do kódu
  • Nastavte timeout-minutes pre každý job
  • Využívajte concurrency na zrušenie starých behov pri novom push

GitHub Actions je dnes štandard pre open-source projekty a rýchlo sa stáva voľbou číslo jedna aj pre enterprise tímy vďaka hlbokej integrácii s GitHubom.