Informazioni su Azure Pipelines

Completato

È possibile automatizzare i passaggi del processo di distribuzione usando una pipeline. Ogni volta che si apporta una modifica al codice e si esegue il commit della modifica nel repository Git, la pipeline esegue il processo predefinito. Una pipeline può verificare che il codice Bicep soddisfi gli standard di qualità e quindi automatizza i passaggi per distribuire le risorse in Azure. Per definire il processo, si crea una definizione di pipeline.

Azure Pipelines è una funzionalità del servizio Azure DevOps. Azure DevOps include Azure Repos, che ospita i repository Git usati per archiviare e condividere il codice con i collaboratori. Quando si archivia il codice Bicep in Git, Azure Pipelines può accedere al codice per automatizzare i processi di distribuzione. In questa unità verranno fornite informazioni su Azure Pipelines.

Definizione di pipeline

Una pipeline è il processo ripetibile usato per testare e distribuire il codice definito in un file di configurazione. Una pipeline include tutti i passaggi da eseguire nell'ordine desiderato.

Quando si lavora con Azure Pipelines, la pipeline viene definita in un file YAML. Un file YAML è un file di testo strutturato, così come Bicep è un file di testo strutturato. È possibile creare e modificare file YAML usando qualsiasi editor di testo. In questo modulo si userà Visual Studio Code. Visual Studio Code offre un'estensione che consente di modificare più facilmente i file della pipeline YAML di Azure DevOps. Anche l'interfaccia Web di Azure DevOps offre alcuni strumenti che è possibile usare per visualizzare e modificare i file YAML della pipeline.

Nota

Azure Pipelines include le pipeline classiche, una versione precedente della funzionalità delle pipeline. Le pipeline basate su YAML hanno sostituito le pipeline classiche. In questo modulo vengono illustrate solo le pipeline YAML. Si consiglia l'uso di pipeline YAML.

Poiché il file YAML di una pipeline è un file di codice, il file viene archiviato con il codice Bicep nel repository Git. Per collaborare alla definizione della pipeline, si usano le funzionalità Git. È possibile gestire versioni diverse del file della pipeline usando i commit e i rami. In un modulo futuro si apprenderanno anche altre funzionalità avanzate delle pipeline, come i modelli. I modelli semplificano il riutilizzo delle definizioni delle pipeline.

Agenti e pool

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.

Una pipeline deve anche accedere a un computer per poter eseguire la procedura di distribuzione. Azure Pipelines usa un computer denominato agente. Un agente è un computer configurato per eseguire i passaggi di distribuzione per una pipeline. Ogni agente 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 Azure Pipelines indica all'agente di eseguire i passaggi definiti in un file YAML.

Azure Pipelines include più tipi di agenti per sistemi operativi diversi, ad esempio Ubuntu o Windows, e set di strumenti diversi. Microsoft esegue questi agenti in modo che non sia necessario mantenere alcuna infrastruttura di calcolo per gli agenti. Gli agenti a volte vengono chiamati agenti ospitati da Microsoft o agenti ospitati perché sono ospitati per conto dell'utente. Quando la pipeline viene eseguita, viene automaticamente creato un agente ospitato. Quando l'esecuzione della pipeline termina, l'agente ospitato viene automaticamente eliminato. Non è possibile accedere direttamente agli agenti ospitati, quindi è importante che la pipeline contenga tutti i passaggi necessari per distribuire la soluzione.

Un pool di agenti contiene più agenti dello stesso tipo. Durante la creazione della pipeline si indica ad Azure Pipelines quale pool di agenti usare per eseguire ogni set di passaggi. Quando la pipeline viene eseguita, attende che un agente del pool diventi disponibile e quindi indica all'agente di eseguire i passaggi di distribuzione. Qualsiasi agente del pool può essere assegnato all'esecuzione della pipeline.

Diagramma che mostra una pipeline eseguita in un agente all'interno di un pool di agenti.

Nota

È possibile creare un agente personalizzato denominato agente self-hosted. È possibile creare un agente self-hosted se si dispone di software specifico che è necessario eseguire come parte della pipeline o se è necessario controllare con precisione la configurazione dell'agente. In questo modulo non vengono presentati gli agenti self-hosted, ma nel riepilogo è disponibile un collegamento ad altre informazioni.

Trigger

Per indicare ad Azure Pipelines quando eseguire la pipeline, si crea un trigger. È possibile scegliere tra più tipi di trigger. Per il momento si userà un trigger manuale. Si indicherà manualmente ad Azure Pipelines quando avviare l'esecuzione della pipeline. Più avanti in questo modulo verranno presentati gli altri tipi di trigger.

Diagramma che mostra un trigger che avvia una pipeline.

Passaggi

Un passaggio rappresenta una singola operazione eseguita dalla pipeline. 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 della pipeline.

Azure Pipelines offre due tipi di passaggi:

  • Script. Usare un passaggio di script per eseguire un singolo comando o una sequenza di comandi in Bash, PowerShell o nella shell dei comandi di Windows.
  • Attività. Un'attività è un modo pratico per accedere a molte funzionalità diverse senza scrivere istruzioni script. Ad esempio, un'attività predefinita può eseguire l'interfaccia della riga di comando di Azure e i cmdlet di Azure PowerShell per testare il codice o caricare file in un server FTP. Chiunque può scrivere un'attività e condividerla con gli altri utenti pubblicando l'attività in Visual Studio Marketplace. È disponibile un ampio set di attività commerciali e open source.

Alcuni utenti preferiscono usare istruzioni script invece delle attività predefinite, perché offrono un maggiore controllo sulle operazioni eseguite. Altri utenti preferiscono usare le attività per evitare di dover scrivere e gestire gli script. In questo modulo entrambi gli approcci vengono usati in combinazione.

Processi

In Azure Pipelines un processo rappresenta un set ordinato di passaggi. In una pipeline è sempre presente almeno un processo e, quando si creano distribuzioni complesse, è comune avere più processi.

Nota

È possibile impostare ogni processo per eseguirlo in un pool di agenti diverso. Eseguire i processi in pool di agenti diversi è utile quando si compilano e distribuiscono soluzioni che devono usare sistemi operativi diversi in parti diverse della pipeline di processi.

Si supponga, ad esempio, di creare un'app iOS e il servizio back-end dell'app. È possibile avere un processo eseguito in un pool di agenti macOS per compilare l'app iOS e un altro processo eseguito in un pool di agenti Ubuntu o Windows per compilare il back-end. Si potrebbe anche indicare alla pipeline di eseguire i due processi contemporaneamente, velocizzandone così l'esecuzione.

In questo modulo viene dichiarato il pool di agenti nella radice dei file di definizione della pipeline, in modo che tutti i processi nelle pipeline usino lo stesso pool di agenti.

Diagramma che mostra una pipeline con due passaggi, entrambi all'interno di un processo.

Nota

È anche possibile usare le fasi in Azure Pipelines per suddividere la pipeline in fasi logiche e aggiungere controlli manuali in vari punti dell'esecuzione della pipeline. Ulteriori informazioni sulle fasi verranno presentate in moduli futuri.

Esempio di pipeline semplice

Ora che si conoscono i concetti di base di Azure Pipelines, si esaminerà una semplice definizione di pipeline in YAML:

trigger: none

pool:
  vmImage: ubuntu-latest

jobs:
- job:
  steps:
  - script: echo Hello, world!
    displayName: 'Run a one-line script'
  
  - script: |
      echo We'll add more steps soon.
      echo For example, we'll add our Bicep deployment step.
    displayName: 'Run a multi-line script'

Ecco alcune informazioni dettagliate su ogni parte del file:

  • trigger indica alla pipeline quando procedere con l'esecuzione. In questo caso, trigger: none indica ad Azure Pipelines che si vuole attivare manualmente la pipeline.
  • pool indica alla pipeline quale pool di agenti usare quando esegue i passaggi della pipeline. In questo esempio la pipeline viene eseguita in un agente che esegue il sistema operativo Ubuntu, che proviene dal pool di agenti ospitati da Microsoft.
  • jobs raggruppa tutti i processi nella pipeline.
  • job indica alla pipeline che è disponibile un singolo processo.

    Suggerimento

    Quando nella pipeline è presente un solo processo, è possibile omettere le parole chiave jobs e job. Qui è stata inclusa job per chiarire il funzionamento dei concetti in una pipeline.

  • steps elenca la sequenza di azioni 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 valore displayName, ovvero un nome leggibile dagli utenti per il passaggio. Il nome visualizzato sarà visibile nei log della pipeline. 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 della pipeline.

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. Il numero di spazi usati è importante. Se non si impostano correttamente i rientri nel file, Azure Pipelines non può interpretarlo. Visual Studio Code consente di trovare e correggere gli errori nei rientri dei file YAML.