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

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.
Link Utili
- https://docs.github.com/actions
- https://github.com/marketplace
- https://docs.github.com/en/actions/get-started/quickstart
- https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions
- GIT Cheatsheet
- Gitea - installazione e test
- Backup e ripristino server Gitea
- Utilizzo Gitea Actions per distribuire un sito Hugo su AWS S3
- Gitflow: Passaggi, Alternative, Pro e Contro
- DevOps con GitOps - Argo CD, Flux, Jenkins X, Weave GitOps e altri