Una pipeline GitHub Actions è definita in un file YAML che si trova nella directory workflows del repository. La pipeline è composta da uno o più job, che a loro volta contengono una serie di step.
Notazione "actions/"¶
La notazione "actions/" in GitHub Actions si riferisce a delle azioni predefinite fornite da GitHub che puoi utilizzare nei tuoi workflow. Queste azioni sono ospitate nel repository ufficiale di GitHub Actions su GitHub e sono progettate per eseguire compiti comuni come il checkout del codice, la configurazione di ambienti di runtime, il caricamento di artefatti, e molto altro.
Sintassi generale
La sintassi actions/
actions/: Il namespace che indica che l'azione è fornita da GitHub.
<nome-azione>: Il nome dell'azione.
@<versione>: La versione specifica dell'azione da utilizzare. Utilizzare una versione specifica è una buona pratica per garantire la stabilità del workflow.
Esempio di workflow¶
Nome del workflow¶
Questo è il nome del workflow e viene visualizzato nella scheda Actions del repository GitHub.
name: Deploy mkdocs wiki pages
Eventi di trigger¶
Questo specifica gli eventi che attivano il workflow. In questo caso, il workflow viene eseguito quando c'è un push al branch dev o quando viene avviato manualmente dalla scheda Actions.
on:
push:
branches: ["dev"]
workflow_dispatch:
Permessi¶
Questo imposta i permessi del token GitHub (GITHUB_TOKEN) utilizzato nel workflow. Qui, il token ha permessi di lettura sui contenuti, scrittura sulle pagine e scrittura sui token ID.
permissions:
contents: read
pages: write
id-token: write
Concorrenza¶
Questo limita il numero di esecuzioni concorrenti del workflow. In questo caso, permette solo una esecuzione alla volta per il gruppo "pages" e non cancella le esecuzioni in corso.
concurrency:
group: "pages"
cancel-in-progress: false
Valori di default¶
Per esempio questo imposta la shell predefinita per i comandi di esecuzione su bash.
defaults:
run:
shell: bash
Job di build¶
Questo job esegue la build del sito. Ecco i passaggi:
Checkout code: Clona il repository e lo rende disponibile nello step di build
Set up Python: Imposta Python 3.12.
Install dependencies: Installa le dipendenze dal file requirements.txt.
Setup Pages: Configura GitHub Pages.
Build with mkdocs: Costruisce il sito con MkDocs eseguendo i comandi di build.
Upload artifact: Carica i file generati nella directory site come artefatto con il nome wiki-pages.
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.12'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
ls -al .
pip install -r requirements.txt
- name: Setup Pages
id: pages
uses: actions/configure-pages@v5
- name: Build with mkdocs
run: |
mkdocs build
ls -al ./site
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: ./site
name: wiki-pages
Job di deploy¶
Questo job esegue il deploy del sito su GitHub Pages.
Checkout code: Clona il repository.
Deploy to GitHub Pages: Esegue il deploy dell'artefatto wiki-pages su GitHub Pages.
deploy:
runs-on: ubuntu-latest
needs: build
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
with:
artifact_name: wiki-pages