GitHub Actions este cea mai utilizată platformă modernă de Continuous Integration și Continuous Delivery/Deployment (CI/CD) din lume, integrată direct în depozitele de cod GitHub. Ea permite echipelor de dezvoltare să automatizeze întregul ciclu de viață al software-ului: rularea suitei de teste unitare la fiecare Pull Request, auditul static de securitate (SAST), compilarea pachetelor binare sau a imaginilor Docker și lansarea automată a versiunilor în mediile de producție (Kubernetes, AWS, Vercel).
Workflows-urile GitHub Actions sunt definite declarativ în fișiere YAML stocate în directorul .github/workflows/. Datorită vastului ecosistem GitHub Marketplace, dezvoltatorii pot compune pipeline-uri complexe folosind mii de acțiuni comunitare pre-construite (actions) pentru setup de limbaje, caching de dependințe și autentificare cloud federată prin OIDC (OpenID Connect).
# Declarație Workflow (.github/workflows/ci.yml)
# ┌─────────────────────────────────────────────────────────────┐
# │ Trigger (on: [push, pull_request]) │
# └────────────────────────────┬────────────────────────────────┘
# │
# ▼
# ┌─────────────────────────────────────────────────────────────┐
# │ Job: test (runs-on: ubuntu-latest) │
# │ ├── Step 1: Checkout cod sursă (actions/checkout@v4) │
# │ ├── Step 2: Setup mediu (actions/setup-node / setup-python)│
# │ ├── Step 3: Restaurare cache dependințe (actions/cache) │
# │ └── Step 4: Rulare teste unitare (npm test / pytest) │
# └────────────────────────────┬────────────────────────────────┘
# │ (needs: test - doar dacă testele trec!)
# ▼
# ┌─────────────────────────────────────────────────────────────┐
# │ Job: deploy-prod (Environment: production) │
# │ ├── Step 1: Autentificare OIDC Cloud fără parole statice │
# │ └── Step 2: Deploy binar / container în Kubernetes │
# └─────────────────────────────────────────────────────────────┘
Pilonii Tehnologici ai GitHub Actions
| Concept CI/CD | Sintaxă YAML | Efect Asigurat în Pipeline |
|---|---|---|
| Event Triggers | on: [push, pull_request, workflow_dispatch] |
Declanșează automat execuția pipeline-ului la evenimente specifice din depozit sau la cerere. |
| Matrix Strategy | strategy: matrix: { os: [...], node: [...] } |
Rulează testele în paralel pe combinații multiple de sisteme de operare și versiuni de limbaj. |
| GitHub Secrets & OIDC | ${{ secrets.API_TOKEN }} / id-token: write |
Injectează credențiale criptate în runner fără riscul de expunere în logurile de rulare. |
| Reusable Workflows | workflow_call: inputs: { ... } |
Standardizează pipeline-urile de securitate și deploy în zeci de depozite din organizație. |
name: CI Pipeline
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
validate:
runs-on: ubuntu-latest
steps:
- name: Checkout cod
uses: actions/checkout@v4
- name: Configurare mediu Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
- name: Instalare dependințe curate
run: npm ci
- name: Verificare stil de cod (Linter)
run: npm run lint
- name: Rulare suită completă de teste
run: npm test -- --coverage