Scheda di riferimento di GitHub Actions - Struttura standard ed elenco delle azioni più utili

Una breve panoramica sulle azioni comuni di GitHub e sulla loro struttura.

Indice

GitHub Actions è una piattaforma di automazione e CI/CD all’interno di GitHub, utilizzata per costruire, testare e distribuire il codice in base a eventi come push, pull request o in base a una pianificazione.

Oltre al servizio standard GitHub, è possibile utilizzare GitHub Actions in un server Gitea self-hosted.

github actions flow

Le Actions coprono strumenti ufficiali, della community e di terze parti, supportando l’automazione dalla costruzione e i test fino alla distribuzione, gestione del rilascio, QA e notifiche.


Questo riepilogo copre la struttura delle GitHub Actions, una breve descrizione e le azioni più comuni utilizzate nei flussi di lavoro open source e commerciali. Fa parte di Strumenti per Sviluppatori: La Guida Completa ai Flussi di Lavoro di Sviluppo Moderni.

Struttura di Configurazione di Base

I flussi di lavoro (Workflows) di GitHub Actions sono definiti in file YAML situati nel directory .github/workflows all’interno del repository.

name: Workflow Name
on:
  push:
    branches: [ main ]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Set up Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '18'
      - name: Run tests
        run: npm test
  • Il blocco on specifica gli eventi di attivazione.
  • Ogni job viene eseguito su un runner dedicato.
  • I steps possono eseguire comandi shell o chiamare azioni riutilizzabili.

Componenti Principali del Workflow

Componente Descrizione
Workflow Processo automatizzato (YAML) attivato da un evento
Evento Attività che attiva il workflow (push, pull_request, ecc.)
Job Serie di step eseguiti su un runner, possono essere eseguiti in sequenza o in parallelo
Step Ogni comando o azione all’interno di un job
Runner VM o container dove vengono eseguiti i job
Action Estensione/add-on riutilizzabile che incapsula un’attività

Eventi di Attivazione

  • push
  • pull_request
  • schedule (usando la sintassi cron)
  • workflow_dispatch (attivazione manuale, consente parametri di input)
  • release, issue, ecc.

Esempio:

on:
  push:
    branches: [ main ]
  workflow_dispatch:
    inputs:
      environment:
        description: 'Deployment Environment'
        required: true
        default: 'production'
        type: string

Azioni Integrati Utili

Azione Scopo Parametri Comuni
actions/checkout Effettua il checkout del codice del repository ref, token, submodules, persist-credentials
actions/setup-node Configura l’ambiente Node.js node-version, cache, architecture, check-latest
actions/setup-python Configura Python python-version, architecture
actions/cache Memorizza le dipendenze nella cache path, key, restore-keys
docker/build-push-action Costruisci e pusha immagini Docker context, file, platforms, tags, push, build-args
actions/upload-artifact Carica gli artifact di build name, path, if-no-files-found
actions/download-artifact Scarica gli artifact name, path
github/email-actions Invia notifiche email to, subject, content, attachments
peter-evans/create-pull-request Crea PR tramite workflow branch, title, body, labels, base
actions/github-script Esegue JavaScript arbitrario nel workflow script, github-token

Parametri delle Azioni

Parametri Generali per Qualsiasi Chiamata all’Azione:

- name: Some Action or Step
  uses: owner/repo@ref
  with:
    param1: value
    param2: value
  env:
    ENV_VAR: value
  if: ${{ condition }}
  run: command_to_run
  shell: bash|pwsh|python|sh
  continue-on-error: true|false
  • with: argomenti passati all’azione (vedere la documentazione dell’azione per tutte le opzioni)
  • env: variabili di ambiente per lo step
  • if: esecuzione condizionale
  • run: comandi shell (se non si sta usando un’azione)
  • shell: shell utilizzata per eseguire lo step
  • continue-on-error: procedere anche se lo step fallisce

Definizione di Input Personalizzati per le Azioni

Nel metadato della tua azione (action.yml):

inputs:
  example-input:
    description: 'An example input'
    required: false
    default: 'default-value'

Quando viene usato in un workflow:

- uses: my/action@v1
  with:
    example-input: 'custom-value'

Accessibile come variabile di ambiente INPUT_EXAMPLE_INPUT quando l’azione viene eseguita.

Esempio: Workflow con Parametri Manuali

name: Deploy
on:
  workflow_dispatch:
    inputs:
      environment:
        description: 'Deployment Environment'
        required: true
        default: 'production'
        type: string
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
      - name: Deploy to environment
        run: echo "Deploying to ${{ github.event.inputs.environment }}"

Marketplace delle Azioni

  • Migliaia di azioni riutilizzabili sono disponibili nel GitHub Marketplace.
  • Le categorie includono: deployment cloud, strumenti di notifica, framework di test, analisi del codice e altro ancora.
  • Esplora: actions/checkout, actions/setup-node, docker/build-push-action, actions/cache, actions/upload-artifact, e molti altri.

Suggerimenti Rapidi

  • Posiziona i file del workflow in .github/workflows.
  • Usa workflow_dispatch con inputs per esecuzioni manuali e parametriche.
  • Usa l’azione cache per accelerare l’installazione delle dipendenze.
  • Usa la matrix del job per testare più versioni di OS/runtime.
  • Usa i segreti per i dati sensibili, riferiti come ${{ secrets.SECRET_NAME }}.

Questo cheatsheet copre gli aspetti essenziali dell’uso, configurazione ed estensione di GitHub Actions per l’automazione, CI/CD e altro ancora. Per maggiori dettagli e aggiornamenti, consulta sempre la documentazione ufficiale di GitHub e i repository delle azioni.

Azioni GitHub Comuni

Ecco un elenco pratico di GitHub Actions frequentemente utilizzate per automatizzare CI/CD, testing, build, deployment e compiti del flusso di lavoro:

Azioni Ufficiali Principali

Azione Scopo Esempi Chiave di Parametri
actions/checkout Effettua il checkout del codice del repository ref, submodules
actions/setup-node Configura l’ambiente Node.js node-version, cache
actions/setup-python Configura l’ambiente Python python-version
actions/setup-java Configura il JDK Java distribution, java-version
actions/cache Memorizza le dipendenze e gli output di build path, key, restore-keys
actions/upload-artifact Carica gli artifact di build name, path
actions/download-artifact Scarica gli artifact dal workflow name, path
actions/github-script Esegue JavaScript usando il contesto e API GitHub script
actions/create-release Crea un rilascio GitHub tag_name, release_name
actions/upload-release-asset Carica asset in un rilascio upload_url, asset_path
actions/labeler Applica automaticamente etichette a issue/PR repo-token, configuration-path

Azioni Popolari della Community e di Terze Parti

Azione Scopo
docker/build-push-action Costruisci e pusha immagini Docker
actions/setup-go Configura l’ambiente Go
super-linter/super-linter Linting del codice automatizzato universale
trufflesecurity/trufflehog Scansiona segreti e credenziali
peaceiris/actions-gh-pages Distribuisci siti statici su GitHub Pages
JamesIves/github-pages-deploy-action Distribuisci progetti su GitHub Pages
peter-evans/create-pull-request Crea pull request automaticamente
softprops/action-gh-release Crea e carica rilasci GitHub
ad-m/github-push-action Spingi modifiche indietro al repository GitHub
actions/setup-dotnet Configura .NET SDK
azure/login Autenticazione su Azure
google-github-actions/auth Autenticazione su Google Cloud

Azioni per Testing, QA e Reporting

Azione Scopo
actions/setup-ruby Configura l’ambiente Ruby
codecov/codecov-action Carica report di copertura del codice su Codecov
coverallsapp/github-action Carica risultati di copertura su Coveralls
dorny/test-reporter Allega risultati dei test a GitHub Checks
stefanzweifel/git-auto-commit-action Auto-commit e push delle modifiche ai file

Azioni per Deployment e Notifiche

Azione Scopo
appleboy/scp-action Carica file usando SCP
SamKirkland/FTP-Deploy-Action Distribuisci file tramite FTP/FTPS
cypress-io/github-action Esegui test end-to-end con Cypress
slackapi/slack-github-action Invia messaggi a Slack
dawidd6/action-send-mail Invia email durante l’esecuzione del workflow

Utilità e Gestione del Workflow

Azione Scopo
peter-evans/repository-dispatch Attiva workflow di repository esterni
fregante/setup-git-user Configura le credenziali dell’utente Git per i commit
andymckay/labeler Appone etichette a issue e PR in base ai percorsi
actions/configure-pages Configura la pubblicazione su GitHub Pages
EndBug/add-and-commit Aggiungi e commita file all’interno di un workflow
dangoslen/changelog-enforcer Verifica se un changelog è stato aggiornato per le PR

Come Trovare Altre Azioni

Esistono molte azioni GitHub che abilitano l’automazione del flusso di lavoro, come test automatizzati, deployment in produzione, notifiche e integrazioni con altri servizi. Il GitHub Marketplace elenca migliaia di azioni in categorie come testing, sicurezza, deployment, notifiche, qualità del codice e integrazioni. Elenco curati come “Awesome Actions” sono anche ottimi per ispirazione e scoperta.