Il software deve essere scritto, testato e distribuito in un ambiente di produzione. Per fare ciò, in modo automatizzato, gli sviluppatori e i DevOps costruiscono pipelines CI/CD o pipeline di compilazione/rilascio che automatizzano gran parte di queste attività.
A pipeline allows developers, DevOps teams and others to produce and deploy reliable code. In the Microsoft realm, the way to build a pipeline is with Azure DevOps with a feature called Azure Pipelines.
Azure Pipelines ti permette di eseguire automaticamente le compilazioni, eseguire i test e distribuire il codice (rilascio) su vari ambienti di sviluppo e produzione. Ma cosa succede se non hai mai sentito parlare di Azure DevOps o di una pipeline prima, o se non ne hai mai costruita una con Azure DevOps? In tal caso, questo tutorial su Azure Pipelines è quello che fa per te.
Un grande ringraziamento a Peter De Tender, Formatore Tecnico Microsoft Azure, per il suo aiuto con questo articolo.
Panoramica del progetto
Questo è un articolo di progetto in cui affrontiamo come costruire un progetto o implementare una soluzione. Ogni sezione sarà costituita da passaggi cumulativi che si basano sul precedente.
In questo progetto, imparerai, dall’inizio, come creare la tua prima pipeline Azure DevOps. Imparerai concetti come l’invocazione delle compilazioni da un commit di controllo versione Git, l’esecuzione automatica dei test e infine il rilascio dei pacchetti negli ambienti. Alla fine di questo progetto, avrai un’applicazione di e-commerce di esempio distribuita come Azure WebApp.
Questo progetto dovrebbe richiedere 30 minuti per essere completato.
Nota che se segui questo progetto e rimuovi immediatamente le risorse create, non ti verrà addebitato nulla sul tuo account Azure. Non dimenticare di rimuoverle!
Target Audience
Questo progetto coprirà le basi per la configurazione della tua prima pipeline Azure nell’interfaccia web di Azure DevOps. Imparerai molto da questo progetto se sei completamente nuovo alle pipeline Azure, ma non tanto se hai già costruito le tue pipeline o sei un esperto di Azure Pipelines.
Requisiti di ambiente
Se stai pianificando di seguire questo progetto passo dopo passo, assicurati di avere almeno quanto segue:
- Un account Azure
- Già connesso al Portale Azure con privilegi di amministratore globale o simili.
- A GitHub account
- Un repository vuoto su Github creato
- Un’istanza vuota di Azure WebApp distribuita utilizzando dotnetcore 2.2 e Linux come piattaforma
Creazione di un’organizzazione Azure DevOps
Poiché partiamo da zero, creerai innanzitutto l’oggetto “base” in cui sono contenute tutte le funzionalità e i servizi di Azure DevOps, chiamato organizzazione. L’organizzazione è il luogo in cui vengono archiviati tutti i progetti, che imparerai a creare nella sezione successiva.
- Dal Portale di Azure, vai su Tutti i servizi, cerca DevOps e seleziona Azure DevOps. Puoi vedere cosa aspettarti di seguito. Questo aprirà la finestra di Azure DevOps, come mostrato di seguito.

2. Successivamente, fai clic su Le mie organizzazioni Azure DevOps e fornisci le tue credenziali di Azure. Verrai portato a una pagina in cui puoi creare una nuova organizzazione, come mostrato di seguito. Una volta qui, fai clic sul pulsante blu Crea nuova organizzazione.

3. Nella pagina successiva, fornisci un nome per l’organizzazione. Se incontri problemi nell’utilizzo di un nome specifico, assicurati di controllare le convenzioni di denominazione delle organizzazioni Azure DevOps. In questa schermata, specifica anche una regione di Azure più vicina a te. Una volta fatto, fai clic su Continua.

A questo punto, la tua organizzazione Azure DevOps è stata creata!
Creazione di un progetto Azure DevOps
Il prossimo passo è creare un progetto. Un progetto è un contenitore per il flusso di lavoro che creerai, vari artefatti e qualsiasi altra informazione relativa a un particolare servizio o software.
Azure DevOps ti permette di creare un progetto nello stesso flusso di lavoro in cui hai creato l’organizzazione come descritto in precedenza. Se hai seguito le istruzioni, ora dovresti trovarsi nella pagina di creazione del progetto come mostrato di seguito.
- Nella pagina di creazione del progetto, fornisci un nome per il tuo progetto nel campo Nome progetto. Per questo progetto, userai un progetto Azure DevOps chiamato devopsdemo.
- Conferma la creazione del progetto cliccando sul pulsante + Crea progetto.
- Per ora, lascia la Visibilità impostata su Privato. Ciò garantisce che il tuo progetto non sia accessibile da Internet. Un progetto pubblico consente a utenti non appartenenti al progetto e utenti non registrati di accedere in sola lettura agli artefatti del progetto.

A questo punto, è stato creato il tuo spazio di lavoro Azure DevOps (progetto + organizzazione). Se hai seguito le istruzioni, ora avrai un’organizzazione Azure DevOps chiamata pdtitws123 e un progetto all’interno di quella organizzazione chiamato devopsdemo.

Creazione di un flusso di lavoro di compilazione Azure DevOps
Ora che hai impostato un’organizzazione e un progetto Azure DevOps, puoi creare un flusso di lavoro di compilazione al suo interno. Il flusso di lavoro è dove accade la magia. È qui che creerai compilazioni per svolgere varie attività come compilare il codice, importare dipendenze e altro ancora.
- Dal dashboard, seleziona Flussi di lavoro quindi su Build.

2. Vedrai un messaggio che ti informa che non sono ancora stati trovati flussi di lavoro di build. Fai clic su Nuovo flusso di lavoro per iniziare a creare il flusso di lavoro di build.

3. Ti verrà quindi chiesto dove è conservato il tuo codice. In questo progetto, il codice è conservato in un repository di GitHub. Seleziona GitHub. Questo è il luogo in cui il codice è conservato e i trigger per l’avvio della build arriveranno da qui.

4. Una volta che fai clic su GitHub, ti verrà chiesto di fornire le credenziali del tuo account GitHub come mostrato di seguito. Prima di iniziare questo passaggio, ricorda di avere un repository GitHub vuoto creato come definito nella sezione dei prerequisiti di questo articolo!

5. Successivamente, conferma il passaggio in cui ti viene chiesto di autorizzare Azure Pipelines. In questo modo, Azure DevOps avrà il permesso di accedere ai tuoi repository GitHub.

Collegare un repository GitHub al flusso di lavoro di build
Dopo aver fornito ad Azure DevOps l’autorizzazione al tuo account GitHub, collega un repository GitHub al flusso di lavoro di build.
- Seleziona il repository GitHub vuoto che hai creato per questo progetto.

2. Consenti al progetto di leggere, scrivere e controllare il codice sorgente dal repository selezionato in precedenza. Quindi conferma questo processo facendo clic su Approva e Installa.

3. Facendo clic su conferma, verrà generato un errore come mostrato di seguito. Questo errore si verifica perché il repository GitHub selezionato è vuoto.

A questo punto, il tuo repository GitHub sarà collegato al flusso di lavoro di build di Azure DevOps.
Non è necessario creare una nuova pipeline ogni volta che si desidera collegare un repository GitHub a una pipeline di compilazione di Azure DevOps.
Popolazione del codice del repository di esempio di GitHub
La pipeline di compilazione di Azure DevOps non verrà eseguita senza del codice nel repository GitHub. Il codice non è importante in questo momento. Per ottenere del codice nel repository, utilizzeremo un repository esistente per clonare del codice. In questo repository, ho tutto il codice sorgente disponibile per pubblicare un’applicazione di esempio di e-commerce in Azure WebApps.
Il codice di esempio per questo repository conterrà un’applicazione di e-commerce chiamata SimplCommerce. Questa applicazione è un’applicazione dotnetcore open-source più realistica rispetto al tipico progetto “hello world”.
- Passa a questo repository di esempio di GitHub e fai clic su Importa codice come mostrato di seguito.

2. Per l’URL di clonazione del vecchio repository utilizza http://github.com/007FFFLearning/SimplDev e fai clic su Inizia l’importazione.

Quando l’importazione del repository viene completata con successo, aggiorna la finestra Pipeline di Azure DevOps, che dovrebbe consentirti di continuare ora.
Ispezione e visualizzazione della pipeline di compilazione in YAML.
A questo punto, sarai nella fase di revisione del processo di creazione del flusso di lavoro. Ti verrà presentata una rappresentazione del flusso di lavoro di compilazione in YAML. Questo file YAML viene creato automaticamente in base al rilevamento del linguaggio del codice sorgente, che in questo caso è dotnetcore nel progetto.
Uno dei veri vantaggi di Azure DevOps è il flusso di lavoro YAML. Con molti altri strumenti DevOps, è necessario creare manualmente un file di flusso di lavoro.

Esecuzione manuale del flusso di lavoro di compilazione di Azure
In un flusso di lavoro di integrazione continua (CI), la compilazione viene solitamente attivata da un commit nel controllo del codice sorgente. Tuttavia, è anche possibile attivare manualmente il flusso di lavoro di compilazione. Avviamo manualmente un flusso di lavoro di compilazione per vedere cosa succede.
Se hai seguito finora, a questo punto dovresti essere in grado di fare clic su Esegui per avviare il flusso di lavoro di compilazione. Questo avvierà il processo di compilazione del flusso di lavoro come puoi vedere dalla schermata qui sotto.

Dopo pochi secondi, puoi vedere che il processo sarà in esecuzione per macOS come mostrato di seguito. Il flusso di lavoro di compilazione restituirà informazioni in tempo reale durante l’esecuzione di ogni job e task nel flusso di lavoro.

Il flusso di lavoro di compilazione ripeterà quindi lo stesso processo per gli altri sistemi operativi (in questo esempio), come mostrato di seguito. Le azioni intraprese varieranno notevolmente a seconda di come è stato creato il file YAML.

Una volta completata la compilazione, ti verranno mostrati segni di spunta verdi come puoi vedere di seguito. Questa schermata indica che ogni compilazione di piattaforma è stata eseguita correttamente.

Hai creato una pipeline di compilazione di Azure DevOps!
Creazione di una pipeline di rilascio di Azure DevOps
La pipeline di compilazione è stata creata, un ottimo progresso. Se ti fermassi a questo punto, saresti sulla strada giusta per avere una pipeline completa e automatizzata. Ma non abbiamo finito! L’obiettivo finale del software è essere distribuito in modo che i clienti possano utilizzarlo. È ora di automatizzare anche il rilascio con una pipeline di rilascio!
A release pipeline takes a build artifact, a result of the build process and deploys that to one or more environments. In this Project, you’re going to use a release pipeline to publish code in the GitHub repo to an Azure Web App.
- Da Azure DevOps, fai clic su Pipelines e poi su Rilasci.

2. Successivamente, seleziona Nuovo e poi Nuova pipeline di rilascio. Questo avvierà la procedura guidata per la nuova pipeline di rilascio.

3. Dalla lista dei modelli sulla destra, seleziona Deployment di Azure App Service. Vedrai molti diversi tipi di modelli disponibili per risparmiare tempo nella creazione di future pipeline di rilascio.

4. Fornisci una descrizione per il Nome dello stage. Lo stage conterrà le attività di rilascio. Per questo progetto, utilizza il nome Deploy_to_webapp.

La pipeline di rilascio dovrebbe ora apparire come nella schermata sottostante.

5. Nel campo Stages, seleziona 1 job, 1 attività. In questo campo, alla fine, fornirai le impostazioni dell’ambiente di Azure Web App che utilizzerai per il rilascio effettivo.
6. Parte del modello di distribuzione di Azure App Service include alcuni parametri che dovrai definire in questa schermata.
- Nome d’arte – Deploy-to-webapps2 in questo esempio.
- Sottoscrizione Azure – seleziona la tua sottoscrizione e conferma con Autorizza (richiede credenziali)
- Tipo di app – App Web su Linux
- Nome del servizio app – l’app web che hai creato in precedenza

7. Quando hai finito, clicca su Pipeline nel menu principale del tuo progetto Azure Pipeline come mostrato di seguito. Questo ti riporterà alla schermata principale e ti permetterà di completare il passaggio successivo che consiste nel specificare gli artefatti.

Aggiunta di artefatti alla pipeline di rilascio di Azure DevOps
All’interno di una pipeline di rilascio, ci sono molti elementi diversi che devono essere distribuiti. Questi elementi vengono chiamati artefatti. Gli artefatti semplicemente mettono, sono componenti distribuibili della tua applicazione. Azure Pipelines può distribuire artefatti prodotti da una vasta gamma di fonti di artefatti.
In questa sezione, vediamo come aggiungere artefatti alla pipeline di rilascio.
- Mentre sei sulla schermata Pipeline, clicca su Aggiungi un artefatto.
- Il Tipo di origine è già impostato su Build, che è quello che vuoi poiché stai distribuendo l’output della pipeline di build creata in precedenza. Scegli la pipeline di build creata in precedenza nel menu a discesa Origine (pipeline di build).
- Quando hai finito, clicca su Aggiungi per salvare la configurazione.

4. Infine, clicca sul pulsante Salva nell’angolo in alto a destra dello schermo per salvare la pipeline di rilascio.
Creazione del rilascio Azure DevOps
Una volta creata la pipeline di rilascio, inizierai a creare rilasci. Un rilascio è un’esecuzione specifica della pipeline. Pensa alla pipeline di rilascio come al modello e alle istanze specifiche di quella pipeline di rilascio come rilasci. Una volta creato un rilascio, è possibile effettuare il relativo deployment.
Per creare un rilascio:
- Fai clic sul pulsante Crea rilascio nell’angolo in alto a destra della finestra come mostrato di seguito.

2. Non devi fare nulla di particolare, quindi nella schermata Crea un nuovo rilascio, accetta le impostazioni predefinite e clicca su Crea. Al momento hai solo una singola fase e una singola versione dell’artefatto di build da distribuire.

3. Dopo qualche secondo, riceverai una notifica (la barra verde) che il rilascio è stato creato come mostrato di seguito. Ora clicca su Rilascio-1 che ti reindirizzerà ai dettagli del processo di rilascio.

Hai ora creato un rilascio ed è pronto per essere distribuito!
Distribuzione manuale di un rilascio
A release is a set of instructions to perform on how to deploy a build. You’ve done all of that. Now it’s time to actually run those instructions and deploy code to an environment.
Mentre sei sul rilascio Rilascio-1 creato in precedenza:
- Seleziona la fase Deploy_to_webapp e conferma Deploy. Quando lo fai, lo stato cambierà in In corso come mostrato di seguito. A questo punto, il rilascio sta recuperando il codice sorgente dalla pipeline di compilazione eseguita in precedenza e lo sta inviando all’istanza di Azure WebApp.
Questo passaggio avvierà un lavoro in esecuzione sul back-end su un agente che copia il codice sorgente e esegue il ciclo di rilascio effettivo.

2. Fai clic sulla fase mentre è in corso. Vedrai le informazioni di registrazione mostrate nell’area di output della console.

Una volta completata, la fase dovrebbe mostrare Riuscito come mostrato di seguito.

Se tutto è andato bene, il rilascio dovrebbe essere terminato e ora dovresti avere un’app Web pubblicata su un Azure Web App!
Ispezionare l’Azure WebApp distribuito
Ora che l’intero processo è completo, assicurati di controllare i risultati del tuo lavoro.
- Accedi al Portale di Azure, vai all’Azure WebApp che hai selezionato nella pipeline di rilascio come destinazione e copia l’URL come mostrato di seguito.

2. Ora incolla quell’URL nel browser fornendo l’URL dell’app Web Azure. Il tuo browser dovrebbe caricare ora l’applicazione di esempio di e-commerce, simile alla homepage sottostante

Hai fatto tutto! Ora hai un’app Web Azure distribuita da un repository GitHub che può essere automatizzata al massimo!
Pulizia
Se hai seguito questa guida passo passo, ora hai una nuova organizzazione Azure DevOps, un progetto, una pipeline di compilazione, una pipeline di rilascio e un rilascio. Se hai finito di testare le cose, assicurati di rimuovere l’organizzazione originale creata in modo da non correre il rischio di essere addebitato per le risorse Azure.
Per farlo:
- Torna al tuo spazio di lavoro principale di Azure DevOps.
- Fai clic su Impostazioni organizzazione nell’angolo in basso a sinistra.
- Nella schermata Panoramica, fai clic sul pulsante Elimina in fondo alla pagina sotto Elimina organizzazione.
- Digita il nome dell’organizzazione e quindi fai clic su Elimina. Questo dovrebbe rimuovere tutto il lavoro appena svolto.
Cosa hai imparato
Se hai seguito le istruzioni di questo progetto, hai creato un’intera pipeline CI/CD da zero in Azure DevOps. Ora dovresti avere un’idea chiara di ciò che comporta questo processo.
Le Azure Pipelines possono andare molto più in profondità rispetto a quanto fatto in questo progetto, ma ora dovresti avere una conoscenza di base dell’intero processo.