Scegliere un agente di compilazione ospitato da Microsoft o self-hosted

Completato

In questa unità verranno illustrati alcuni dei fattori da considerare quando si sceglie un agente di compilazione. Vengono illustrati alcuni vantaggi e limitazioni dell'uso di un agente ospitato da Microsoft, oltre agli elementi coinvolti nella configurazione di un agente di compilazione privato.

Che cosa sono gli agenti di compilazione e i pool di agenti?

Un agente di compilazione è un sistema che esegue attività di compilazione. Deve essere considerato come un server dedicato che esegue il processo di compilazione.

Si supponga di avere un progetto di Azure Pipelines che riceve richieste di compilazione più volte al giorno o che si disponga di più progetti che possono usare lo stesso tipo di agente di compilazione. È possibile organizzare gli agenti di compilazione in pool di agenti, per garantire che sia disponibile un server per l'elaborazione di ciascuna richiesta di compilazione.

Quando viene avviata una compilazione, Azure Pipelines seleziona un agente di compilazione disponibile dal pool. Se tutti gli agenti sono occupati, il processo attende che uno diventi disponibile.

Quando si usa un agente ospitato da Microsoft, è necessario specificare l'immagine della macchina virtuale da usare dal pool. Di seguito è riportato un esempio della configurazione di compilazione esistente che usa un agente di compilazione Ubuntu 20.04:

pool:
  vmImage: 'ubuntu-20.04'
  demands:
  - npm

Quando si utilizza un agente ospitato da Microsoft, si usa vmImage per specificare il tipo di sistema necessario. Microsoft fornisce molti tipi di immagini di macchina virtuale, inclusi quelli che eseguono Windows, macOS e varie versioni di Linux.

La sezione demands consente di specificare il software o le funzionalità del computer di compilazione.

Quando si usa un agente di compilazione dal proprio pool, noto anche come pool privato, è necessario specificare il nome del pool. Ecco un esempio:

pool:
  name: 'MyAgentPool'
  demands:
  - npm

Quando non è necessaria una sezione demands, è possibile abbreviare la sintassi come segue:

pool: 'MyAgentPool'

Un agente di compilazione verrà creato e aggiunto a un pool più avanti in questo modulo.

Quali tipi di agenti è possibile usare?

Quando si sceglie un agente di compilazione, è necessario prendere in considerazione due fattori:

  • Il sistema operativo su cui si vuole eseguire la compilazione
  • La possibilità di usare un agente ospitato da Microsoft o la necessità di fornire il proprio agente

Azure Pipelines supporta i sistemi operativi seguenti:

L'agente di compilazione scelto dipende principalmente dagli strumenti usati per compilare il codice. Se ad esempio si usa Xcode per compilare le applicazioni, è possibile scegliere un agente macOS. Se è necessario Visual Studio, probabilmente si sceglierà un agente di Windows.

La configurazione di compilazione esistente utilizza un agente ospitato da Microsoft. Gli agenti ospitati vengono eseguiti nell'infrastruttura fornita da Microsoft.

Un agente privato usa l'infrastruttura fornita dall'utente. L'agente può essere un sistema in esecuzione nel cloud o nel proprio data center. Entrambi i sistemi funzionano, purché l'agente soddisfi i propri requisiti e possa connettersi ad Azure Pipelines. In questo modulo si userà una macchina virtuale eseguita in Azure, fornita da noi.

Quando è consigliabile usare un agente di compilazione personale?

Per molte attività di compilazione, un agente ospitato da Microsoft esegue tutte le operazioni necessarie. È il modo più semplice per iniziare.

Microsoft si occupa di tutti gli aggiornamenti della sicurezza e del sistema operativo. È sufficiente definire la configurazione della compilazione che si vuole eseguire.

Gli agenti ospitati contengono anche software per la compilazione di molti tipi comuni di applicazioni. È possibile aggiungere qualsiasi altro software necessario durante il processo di compilazione.

Gli agenti ospitati da Microsoft hanno alcune limitazioni, tra cui:

  • Durata di compilazione: Un processo di compilazione può richiedere fino a sei ore.
  • Spazio su disco: Gli agenti ospitati forniscono una quantità fissa di risorse di archiviazione per le origini e gli output della compilazione. Questo spazio di archiviazione potrebbe non essere sufficiente.
  • CPU, memoria e rete: Gli agenti ospitati vengono eseguiti in macchine virtuali per utilizzo generico di Microsoft Azure. Standard_DS2_v2 descrive le caratteristiche della CPU, della memoria e della rete che è possibile prevedere.
  • Interattività: Non è possibile accedere a un agente ospitato.
  • Condivisioni file: Non è possibile inserire gli artefatti di compilazione in condivisioni file Universal Naming Convention (UNC).

Sebbene gli agenti ospitati siano relativamente facili da configurare, l'uso di agenti di compilazione personalizzati comporta alcuni vantaggi, a parte le limitazioni appena descritte.

Ad esempio, quando si usano gli agenti ospitati, l'infrastruttura viene condivisa con altri utenti di Azure DevOps. Anche se in genere sono necessari solo pochi secondi per avviare la compilazione, questa può richiedere più tempo a seconda del carico sul sistema Microsoft.

Inoltre, quando si usano agenti ospitati, si ottiene un sistema pulito con ogni compilazione. Quando si usa un agente di compilazione personalizzato, è possibile decidere se eseguire una compilazione pulita ogni volta o eseguire una compilazione incrementale. Con una compilazione incrementale, è possibile basarsi sugli strumenti di compilazione esistenti e sul codice compilato. Il completamento di una compilazione incrementale può richiedere meno tempo, perché nel sistema sono già installati molti degli strumenti di compilazione e dei componenti dipendenti.

Come compromesso, poiché l'infrastruttura di compilazione è la propria, è responsabilità dell'utente verificare che gli agenti di compilazione contengano le patch più recenti per il software e la sicurezza.

Come si configura un agente di compilazione privato?

Un agente di compilazione privato contiene il software necessario per compilare le applicazioni. Contiene inoltre il software dell'agente, che consente al sistema di connettersi ad Azure Pipelines e di ricevere i processi di compilazione.

Quando si configura un agente privato, si fornisce l'infrastruttura in cui vengono eseguite le compilazioni. Ciò offre flessibilità nella gestione e manutenzione degli agenti.

È ad esempio possibile:

  • Configurare manualmente l'agente di compilazione: Si prepara il sistema, si accede e si installano in modo interattivo gli strumenti di compilazione e il software dell'agente.

  • Automatizzare il processo: È possibile preparare il sistema ed eseguire uno script o uno strumento per installare gli strumenti di compilazione e il software dell'agente. È possibile configurare l'agente dopo che il sistema è passato allo stato in linea o durante il processo di provisioning.

    Ad esempio, quando si eseguono agenti di compilazione in Azure, è possibile usare un modello di Azure Resource Manager (modello ARM) per preparare il sistema e configurarlo in modo che funga da agente di compilazione, tutto in un unico passaggio. Terraform di HashiCorp è un altro modo per automatizzare il processo. Terraform funziona con molti tipi di infrastruttura, tra cui Azure.

  • Creazione di un'immagine: È possibile creare un'immagine o uno snapshot di un ambiente configurato. È quindi possibile usare l'immagine per creare tutti i sistemi identici necessari nel pool.

La configurazione manuale è un modo efficace per iniziare, perché consente di comprendere il processo. È anche il modo più rapido per eseguire la configurazione quando è necessario un solo agente di compilazione.

L'automazione è utile quando sono necessari molti agenti di compilazione oppure quando è necessario preparare e rimuovere l'infrastruttura di compilazione a intervalli regolari. È possibile passare da un processo manuale a un processo automatizzato quando sono necessari più agenti.

Le immagini rappresentano un tipo di automazione. Consentono di risparmiare tempo, perché tutto il software è preconfigurato. Come alternativa, potrebbe essere necessario ricompilare periodicamente le immagini per incorporare le ultime patch del sistema operativo e gli strumenti di compilazione. Packer di HashiCorp è uno strumento popolare per la creazione di immagini.

Per lo scenario di Space Game, si decide di usare un agente di compilazione privato.

Verificare le conoscenze

1.

Supponiamo che si stia creando un videogioco. Il processo di compilazione richiede due ore per l'esecuzione e usa 18-20 GB di spazio su disco per compilare le risorse del gioco. Quale tipo di agente di compilazione è possibile usare?

2.

Supponiamo che si stia creando un'applicazione che viene eseguita in macOS, Linux e Windows. Come è possibile compilare l'app per ogni piattaforma di destinazione?

3.

Un agente di compilazione self-hosted: