Torna al blog
Pubblicato il 4 gennaio 20264 min

Introduzione a GitHub Actions – Crea il tuo primo workflow CI/CD

GitHub Actions è il sistema di automazione integrato in GitHub. In questa guida passo-passo imparerai a configurare il tuo primo workflow

Anathema Studio

Anathema Studio

Team

Introduzione a GitHub Actions – Crea il tuo primo workflow CI/CD

GitHub Actions è diventato uno degli strumenti più utilizzati per l’automazione di processi di sviluppo: testing, build, deploy e persino task amministrativi.

È gratuito per repository pubblici e offre minuti generosi anche sui privati.

In questo tutorial creeremo un workflow completo per un progetto Node.js, ma i concetti sono applicabili a qualsiasi linguaggio.

Prerequisiti

  • Un account GitHub (gratuito è sufficiente)
  • Un repository GitHub (puoi crearne uno nuovo per testare)
  • Conoscenza base di Git
  • Per l’esempio: un progetto Node.js semplice con package.json e qualche test (useremo Jest, ma puoi adattarlo)

Passo 1: Crea il repository e il progetto base

  1. Vai su GitHub e crea un nuovo repository (es. demo-github-actions).
  2. Clona localmente:
git clone https://github.com/tuo-username/demo-github-actions.git
cd demo-github-actions
  1. Inizializza un progetto Node
npm init -y
npm install --save-dev jest
  1. Crea un file index.js con una funzione semplice e un file __tests__/index.test.js con un test.

Passo 2: Crea la cartella dei workflow

I workflow di GitHub Actions vivono nella directory .github/workflows/ del tuo repository.

Crea la cartella e un file YAML:

mkdir -p .github/workflows
touch .github/workflows/ci-cd.yml

Passo 3: Scrivi il primo workflow

Apri .github/workflows/ci-cd.yml e incolla questo contenuto base:

YAML

name: CI/CD Pipeline

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  test-and-build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'

      - name: Installa dipendenze
        run: npm ci

      - name: Esegui test
        run: npm test

      - name: Build (se presente)
        run: npm run build
        # Se non hai un build script, rimuovi o commenta questa riga

Questo workflow si attiva su push o PR sulla branch main e esegue: checkout, setup Node 20, installazione dipendenze e test.

Passo 4: Commit e push

git add .
git commit -m "Aggiunto workflow GitHub Actions"
git push origin main

Vai sul tuo repository GitHub → tab Actions: vedrai il workflow in esecuzione. Se tutto è verde, hai completato il primo CI!

Passo 5: Aggiungi un deploy semplice (esempio con Vercel/Netlify o GitHub Pages)

Per rendere il workflow completo, aggiungiamo un deploy su Vercel (molto comune per frontend).

Prima, crea un account Vercel e collega il repository.

Poi modifica il workflow aggiungendo un job di deploy:

YAML

deploy:
    needs: test-and-build
    runs-on: ubuntu-latest
    if: github.ref == 'refs/heads/main'

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Deploy su Vercel
        uses: amondnet/vercel-action@v20
        with:
          vercel-token: ${{ secrets.VERCEL_TOKEN }}
          vercel-org-id: ${{ secrets.VERCEL_ORG_ID }}
          vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }}

Aggiungi i secret nel repository (Settings → Secrets and variables → Actions).

Best practices

  • Usa npm ci invece di npm install per riproducibilità
  • Pinna le versioni delle actions (@v4 invece di @latest)
  • Separa i job per test, build e deploy
  • Aggiungi caching per velocizzare:

YAML

/- uses: actions/cache@v3
  with:
    path: ~/.npm
    key: $$ {{ runner.os }}-node- $${{ hashFiles('**/package-lock.json') }}

Con poche righe di YAML hai automatizzato test e deploy: ogni push ora è più sicuro e veloce.

GitHub Actions scala facilmente fino a pipeline complesse con matrix, ambienti multipli e approval manuali.

Se vuoi portare l’automazione al livello successivo (integrazioni con cloud AWS/Azure/GCP, container Docker, notifiche Slack), contattaci.

Progettiamo e implementiamo pipeline CI/CD su misura per i tuoi progetti.

Assistant

Assistente Anathema

Sempre online

Clicca il microfono per dettare il messaggio