CI/CD

Învață GitHub Actions & CI/CD: comenzi explicate cu exemple

4 comenzi 4 categorii

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

Anatomia unui Pipeline CI/CD în GitHub Actions
# 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.
Workflow Complet de Producție (Test & Build)
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

Sintaxă & Fundamente YAML 1 comandă

Securitate & Secrete 1 comandă

Optimizare & Caching 1 comandă

Enterprise & Reusable Workflows 1 comandă