Costruisci la tua prima pipeline Azure DevOps da zero

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:

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.

  1. 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.
Azure DevOps dashboard

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.

Create new Azure DevOps organization page

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.

Azure DevOps organization creation page

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.

  1. 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.
  2. Conferma la creazione del progetto cliccando sul pulsante + Crea progetto.
  3. 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.
Azure DevOps project creation page

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.

Azure DevOps project overview

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.

  1. Dal dashboard, seleziona Flussi di lavoro quindi su Build.
Azure DevOps Builds menu

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.

No build pipelines bound yet. Creating a new pipeline.

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.

Selecting version control source

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!

Providing GitHub credentials

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.

Authorizing Azure Pipelines to access 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.

  1. Seleziona il repository GitHub vuoto che hai creato per questo progetto.
Empty source GitHub repo

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.

Confirm Azure DevOps Github integration

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

Error when GitHub repo is empty

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

  1. Passa a questo repository di esempio di GitHub e fai clic su Importa codice come mostrato di seguito.
Empty myfirstrepo GitHub repo

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

Proving the repo clone URL

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.

Reviewing pipeline YAML

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.

Pipeline starting

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.

Running on the macOS build agent

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.

Running on the Linux build agent

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.

Successful pipeline run

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.

  1. Da Azure DevOps, fai clic su Pipelines e poi su Rilasci.
Releases menu item

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

New release pipeline menu option

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.

Select the Azure App Service deployment template

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.

Specify the stage name

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

Created stage

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.

  1. Nome d’arte – Deploy-to-webapps2 in questo esempio.
  2. Sottoscrizione Azure – seleziona la tua sottoscrizione e conferma con Autorizza (richiede credenziali)
  3. Tipo di app – App Web su Linux
  4. Nome del servizio app – l’app web che hai creato in precedenza
Setting template parameters

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.

Going back to the pipeline

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.

  1. Mentre sei sulla schermata Pipeline, clicca su Aggiungi un artefatto.
  2. 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).
  3. Quando hai finito, clicca su Aggiungi per salvare la configurazione.
Adding an artifact

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:

  1. Fai clic sul pulsante Crea rilascio nell’angolo in alto a destra della finestra come mostrato di seguito.
New release pipeline overview

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.

Create a new release item

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.

Click on Release-1

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:

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

Stage in progress

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

Job log showing stage in progress

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

Successful stage

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.

  1. 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.
Finding the Azure App Service URL in the Azure portal

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

The front page of the deployed application

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:

  1. Torna al tuo spazio di lavoro principale di Azure DevOps.
  2. Fai clic su Impostazioni organizzazione nell’angolo in basso a sinistra.
  3. Nella schermata Panoramica, fai clic sul pulsante Elimina in fondo alla pagina sotto Elimina organizzazione.
  4. 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.

Source:
https://adamtheautomator.com/azure-pipelines/