Informazioni su GitHub Actions
È possibile automatizzare i passaggi del processo di distribuzione usando un flusso di lavoro. Ogni volta che si apporta una modifica al codice e si esegue il commit della modifica nel repository Git, il flusso di lavoro esegue il processo predefinito. Un flusso di lavoro può verificare se il codice Bicep soddisfa gli standard di qualità e quindi automatizza le azioni per distribuire le risorse in Azure. Per definire il processo, si crea una definizione di flusso di lavoro.
GitHub Actions è una funzionalità di GitHub. GitHub ospita anche i repository Git usati per archiviare e condividere il codice con i collaboratori. Quando si archivia il codice Bicep in GitHub, GitHub Actions può accedere al codice per automatizzare i processi di distribuzione. In questa unità verranno fornite informazioni su GitHub Actions.
Che cos'è un flusso di lavoro?
Un flusso di lavoro è un processo ripetibile configurabile definito in un file, che viene usato per testare e distribuire il codice. Un flusso di lavoro è costituito da tutti i passaggi, nell’ordine appropriato, che è necessario eseguire.
Quando si lavora con GitHub Actions, si definisce la configurazione del flusso di lavoro in un file YAML. Poiché il file YAML di un flusso di lavoro è un file di codice, il file viene archiviato con il codice Bicep nel repository Git, in una cartella denominata .github/workflows
. Un file YAML è un file di testo strutturato, così come Bicep è un file di testo strutturato. È possibile creare e modificare un file YAML con qualsiasi editor di testo. In questo modulo si userà come editor Visual Studio Code. L'interfaccia Web GitHub offre strumenti che è possibile usare per visualizzare e modificare il file YAML del flusso di lavoro, per collaborare alla definizione del flusso di lavoro e per gestire versioni diverse del file del flusso di lavoro usando commit e rami.
Strumenti di esecuzione
Fino ad ora, i file Bicep sono stati distribuiti dal computer locale. Dopo aver scritto un modello Bicep, è possibile distribuirlo in Azure usando l'interfaccia della riga di comando di Azure o Azure PowerShell. Questi strumenti usano le risorse del computer per inviare il modello ad Azure. Usano l'identità personale per autenticare l'utente in Azure e per verificare che abbia le autorizzazioni per distribuire le risorse.
Un flusso di lavoro deve anche accedere a un computer o a una GPU con il sistema operativo e la piattaforma hardware corretti in modo che possa eseguire le azioni di distribuzione. GitHub Actions usa strumenti di esecuzione, ossia computer configurati per eseguire i passaggi di distribuzione per un flusso di lavoro. Ogni strumento di esecuzione ha già gli strumenti di Bicep e Azure usati nei moduli precedenti, quindi può eseguire le stesse operazioni che l'utente esegue dal proprio computer. Invece di un utente che esegue i comandi, il servizio GitHub Actions indica allo strumento di esecuzione di eseguire i passaggi definiti nel file del flusso di lavoro YAML.
GitHub Actions include più tipi di strumenti di esecuzione per sistemi operativi diversi, ad esempio Linux o Windows, e set di strumenti diversi. GitHub gestisce questi strumenti di esecuzione in modo che non sia necessario mantenere alcuna infrastruttura di calcolo per gli strumenti di esecuzione. Gli strumenti di esecuzione a volte vengono chiamati strumenti di esecuzione ospitati da GitHub o strumenti di esecuzione ospitati perché sono ospitati per conto dell'utente. Quando il flusso di lavoro viene eseguito, viene creato automaticamente uno strumento di esecuzione ospitato. Quando l'esecuzione del flusso di lavoro termina, lo strumento di esecuzione ospitato viene automaticamente eliminato. Non è possibile accedere direttamente agli strumenti di esecuzione ospitati, quindi è importante che il flusso di lavoro contenga tutti i passaggi necessari per distribuire la soluzione.
Nota
Puoi creare uno strumento di esecuzione personalizzato denominato strumento di esecuzione self-hosted. È possibile creare uno strumento di esecuzione self-hosted se si dispone di software specifico che è necessario eseguire come parte del flusso di lavoro o se è necessario controllare con precisione la configurazione dello strumento di esecuzione. In questo modulo non vengono presentati gli strumenti di esecuzione self-hosted, ma nella sezione Riepilogo è disponibile un collegamento ad altre informazioni.
Trigger
Per indicare a GitHub Actions quando eseguire il flusso di lavoro, si usa un trigger. È possibile scegliere tra più tipi di trigger. Per adesso si userà un trigger manuale per indicare a GitHub Actions quando avviare l'esecuzione del flusso di lavoro. Più avanti in questo modulo verranno presentati gli altri tipi di trigger.
Passaggi
Un passaggio rappresenta una singola operazione eseguita dal flusso di lavoro. Un passaggio è simile a un singolo comando eseguito in Bash o in PowerShell. Per la maggior parte delle distribuzioni, vengono eseguiti diversi passaggi in una sequenza. La sequenza e tutti i dettagli di ogni passaggio vengono definiti nel file YAML del flusso di lavoro.
GitHub Actions consente due tipi di passaggi:
- Passaggi di esecuzione: Puoi usare un passaggio di esecuzione per eseguire un singolo comando o una sequenza di comandi in Bash, in PowerShell o nella shell dei comandi di Windows.
- Passaggi di azione: Un passaggio di azione è un modo pratico per accedere a molte funzionalità diverse senza scrivere istruzioni script. È ad esempio disponibile un'attività predefinita per distribuire i file Bicep in Azure. Chiunque può scrivere un'azione e condividerla con gli altri utenti. È disponibile un ampio set di attività commerciali e open source.
Alcuni utenti preferiscono usare istruzioni script invece delle azioni perché offrono un maggiore controllo sulle operazioni eseguite. Altri utenti preferiscono usare le azioni per evitare di dover scrivere e gestire gli script. In questo modulo, useremo entrambi gli approcci in combinazione.
Processi
In GitHub Actions un processo rappresenta un set ordinato di passaggi. In una pipeline è sempre presente almeno un flusso di lavoro e, quando si creano distribuzioni complesse, è comune avere più processi.
Nota
È possibile impostare ogni processo per eseguirlo in uno strumento di esecuzione diverso. Eseguire i processi in strumenti di esecuzione diversi è utile quando si compilano e distribuiscono soluzioni che devono usare sistemi operativi diversi in parti diverse del flusso di lavoro di processi.
Si supponga, ad esempio, di creare un'app iOS e il servizio back-end dell'app. È possibile avere un processo eseguito in uno strumento di esecuzione macOS per compilare l'app iOS e un altro processo eseguito in uno strumento di esecuzione Ubuntu o Windows per compilare il back-end. Si potrebbe anche indicare al flusso di lavoro di eseguire i due processi contemporaneamente, velocizzandone così l'esecuzione.
Esempio di flusso di lavoro di base
Ora che conosci i concetti di base di GitHub Actions, vediamo una semplice definizione di flusso di lavoro in YAML:
name: learn-github-actions
on: [workflow_dispatch]
jobs:
say-hello:
runs-on: ubuntu-latest
steps:
- name: 'Run a one-line command'
run: echo "hello from GitHub Actions"
- name: 'Run a multi-line command'
run: |
echo "We'll add more steps soon."
echo "For example, we'll add our Bicep deployment step."
Ecco alcune informazioni dettagliate su ogni parte del file:
name
è il nome del flusso di lavoro. Il nome viene visualizzato nell'interfaccia Web di GitHub.on
indica al flusso di lavoro quando procedere con l'esecuzione. In questo caso,on: [workflow_dispatch]
indica a GitHub Actions che si vuole attivare manualmente il flusso di lavoro.jobs
raggruppa tutti i processi nel flusso di lavoro.say-hello
è il nome del primo e unico processo in questo flusso di lavoro.runs-on
indica al flusso di lavoro quale strumento di esecuzione usare quando esegue il processo. In questo esempio il flusso di lavoro viene eseguito in un sistema operativo Ubuntu, che proviene da un pool di strumenti di esecuzione ospitati da GitHub.steps
elenca la sequenza di passaggi da eseguire nel processo. Il file YAML di esempio include due passaggi. Entrambi i passaggi eseguono un semplice script per attivare l'echo di un testo. Ogni passaggio ha un valorename
, leggibile dagli utenti. Il nome verrà visualizzato nei log del flusso di lavoro. Per creare un passaggio di script su più righe, usare il carattere barra verticale (|
) come illustrato nell'esempio. Dopo l'esecuzione del passaggio, gli output verranno visualizzati nel log del flusso di lavoro.
Importante
Nei file YAML il rientro è importante. Osservare il file YAML di esempio. Per alcune righe del file YAML è stato impostato un rientro di due o quattro spazi. Se non si impostano correttamente i rientri nel file, GitHub Actions non può interpretarlo. Visual Studio Code consente di trovare e correggere gli errori nei rientri dei file YAML.