Che cos'è Azure Pipelines?
Microsoft Azure Pipelines è un servizio cloud che può essere usato per compilare, testare e distribuire automaticamente i progetti di codice. È anche possibile renderlo disponibile per altri utenti ed è compatibile con qualsiasi linguaggio o tipo di progetto.
Mara è entusiasta della replica del processo di compilazione del team in Azure Pipelines. Amita, la tester, ha finalmente un po' di tempo libero e vuole aggiornarsi. Mara decide che è arrivato il momento ideale per esporle il suo piano: configurare una pipeline di compilazione automatizzata per il sito Web di Space Game usando Azure Pipelines.
Quando sente il piano di Mara, Amita è un po' esitante, ma poiché il piano di Mara consiste nel replicare il processo di compilazione ma non sostituirlo, è anche curiosa. Sa che il processo di compilazione può essere migliorato.
Amita: Sembra un esercizio interessante, ma devi trovare prove a sostegno della tesi DevOps!
Mara: Mi conosci già così bene!
Amita: Quali miglioramenti ti aspetti di vedere, soprattutto visto che farai ciò che già facciamo?
Mara: Credo che il semplice passaggio ad Azure Pipelines offrirà molti vantaggi. Tieni presente che Azure Pipelines è un servizio cloud. Possiamo usarlo per compilare e testare automaticamente il codice. E sarà disponibile anche per gli altri membri del team. In aggiunta, funziona con qualsiasi tipo di linguaggio o progetto.
Il server di compilazione presenta problemi ed è anche difficile mantenerlo aggiornato. Azure Pipelines fornisce server di compilazione ospitati e gestiti da Microsoft, quindi dispone sempre delle patch e degli aggiornamenti della sicurezza più recenti. Non dobbiamo preoccuparci della manutenzione dei server di compilazione.
Sono inoltre disponibili tutti i tipi di script scritti da persone diverse. Non sappiamo nemmeno come funzionano alcuni di loro. Azure Pipelines include un catalogo di attività. Un'attività è uno script o una procedura compressa che è stata astratta con un set di input. Proverò a eseguire il mapping di ciò che i nostri script di compilazione fanno a queste attività. Potremo almeno standardizzare il modo in cui le operazioni vengono eseguite e aumentare il livello di automazione.
Inoltre, Azure Pipelines funziona con tanti tipi di linguaggi e app diversi. Per espanderci in queste direzioni, non dovremo eseguire di nuovo lo strumento.
Amita: So che è egoista, ma perché dovrebbe interessarmi? Uno dei miei grandi problemi è che non so mai quando una compilazione è pronta per essere testata. A volte qualcuno si ricorda di aggiornare il foglio di calcolo, ma il più delle volte se ne dimenticano. Sembra che sono sempre l'ultima persona a saperlo.
Mara: Questo è un problema che possiamo risolvere facilmente. Possiamo configurare la pipeline affinché tu riceva notifiche automatiche tramite la posta elettronica o qualche altro tipo di notifica quando una compilazione è pronta. Non dovrai più aspettare che qualcuno se ne ricordi.
Amita: Bene, quindi il tuo obiettivo è compilare l'app e farmi sapere quando è pronta?
Mara: Esatto. Naturalmente, ho progetti più grandi. So che tutti apprezzerete questo passaggio, quindi voglio partire da qui per offrire una vera integrazione continua.
Amita: Riassumi il concetto di integrazione continua in cinque minuti.
Mara: Lascia che ti mostri un'immagine.
Mara va alla lavagna e disegna la pipeline.
Mara: Questa è la mia pipeline CI. La pipeline CI è il processo di automazione della compilazione e dei test del codice ogni volta che un membro del team esegue il commit di modifiche al controllo della versione. So che per adesso non eseguiamo test automatizzati, ma dalle tempo.
Una pipeline definisce il processo di integrazione continua per l'app. È costituita da passaggi chiamati attività . Può essere considerata come uno script che definisce come eseguire i passaggi di compilazione, test e distribuzione. Proverò a mappare gli script alle attività.
La pipeline viene eseguita quando si inviano modifiche al codice . La pipeline può essere configurata in modo che sia eseguita automaticamente o manualmente. La pipeline viene connessa a un repository di origine come GitHub, Bitbucket o Subversion. Una delle attività per questo sprint consiste nell'iniziare a usare GitHub, quindi si userà GitHub per questo progetto.
Un agente di compilazione compila o distribuisce il codice. Quando si esegue la compilazione o la distribuzione, il sistema avvia uno o più processi. Un agente è un software installabile che esegue un processo di compilazione o distribuzione alla volta. Poiché stiamo usando Azure Pipelines, possiamo usare un agente ospitato da Microsoft. Con gli agenti ospitati da Microsoft, le operazioni di manutenzione e di aggiornamento vengono eseguite automaticamente. Ogni volta che eseguiamo una pipeline, otterremo una nuova macchina virtuale. Sono disponibili diverse immagini di macchine virtuali tra cui scegliere, tra cui Ubuntu 22.04, quella che usiamo.
Il prodotto finale della pipeline è un artefatto della compilazione . Pensa a un artefatto come l'unità compilata più piccola di cui abbiamo bisogno per testare o distribuire l'app. Ad esempio, un artefatto può essere:
- Un'app Java o .NET compressa in un file con estensione jar o zip.
- Una libreria C++ o JavaScript.
- Una macchina virtuale, un cloud o un'immagine Docker.
Ed ecco fatto. So che possiamo farcela.
Amita: Eccellente. Vediamo cosa dobbiamo fare per farla funzionare e quanto tempo occorre. Potresti offrirci una dimostrazione.
Mara: Andrà bene!
Gestire gli agenti di compilazione
Ora che l'utente e il team hanno familiarità con Azure Pipelines, verranno approfonditi i concetti relativi agli agenti di compilazione. Un agente di compilazione è un componente del software installabile che esegue un processo di compilazione o distribuzione alla volta. Per compilare il codice o distribuire il software è necessario almeno un agente. Man mano che si aggiungono altri codici e utenti, servirà più di un agente. Esistono due categorie principali di agenti.
Gli agenti ospitati da Microsoft: sono agenti gestiti da Microsoft, quindi la manutenzione e degli aggiornamenti vengono eseguiti automaticamente. Ogni volta che si esegue una pipeline, si ottiene un nuovo agente per ogni processo nella pipeline. In questo modulo, quando si sceglie Ambiente di sviluppo locale con un agente ospitato da Microsoft, si esegue la pipeline in un agente ospitato da Microsoft. Per eseguire le pipeline in un agente ospitato da Microsoft, l'organizzazione deve avere almeno un processo parallelo ospitato da Microsoft. Controllare il numero di processi paralleli ospitati da Microsoft per assicurarsi che sia presente almeno un processo parallelo ospitato da Microsoft. Se il numero di processi paralleli ospitati da Microsoft è zero (le nuove organizzazioni di Azure DevOps in genere hanno zero processi paralleli), è possibile richiedere una concessione gratuita. Il processo di approvazione per la concessione gratuita richiede in genere dai due ai tre giorni lavorativi.
Gli agenti self-hosted sono agenti gestiti dall'utente. È possibile configurare le macchine virtuali o i contenitori installando il software dell'agente e gli strumenti desiderati e registrare gli agenti con Azure DevOps. In questo modulo, quando si sceglie Ambiente di sviluppo GitHub Codespaces con un agente self-hosted, si usa un agente self-hosted in esecuzione nel contenitore GitHub Codespaces. L'uso di agenti self-hosted in un contenitore GitHub Codespaces non è uno scenario di produzione tipico, ma fornisce un ambiente per completare questo modulo di formazione.