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. Verranno illustrati alcuni dei vantaggi e delle limitazioni dell'uso di un agente ospitato da Microsoft e delle funzionalità coinvolte durante la configurazione dell'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. Si consideri 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 assicurarsi che sia disponibile un server pronto per elaborare ogni richiesta di compilazione.

Quando viene attivata 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, si specifica 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 usa un agente ospitato da Microsoft, si usa vmImage per specificare il tipo di sistema necessario. Microsoft offre molti tipi di immagini di macchine virtuali, tra cui quelle che eseguono Windows, macOS e varie versioni di Linux.

La demands sezione specifica il software o le funzionalità necessarie per il computer di compilazione.

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

pool:
  name: 'MyAgentPool'
  demands:
  - npm

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

pool: 'MyAgentPool'

Si creerà un agente di compilazione e lo si aggiungerà a un pool più avanti in questo modulo.

Che tipo di agenti è possibile usare?

Quando si sceglie un agente di compilazione, è necessario considerare due fattori:

  • Sistema operativo in cui si vuole compilare
  • Se è possibile usare un agente ospitato da Microsoft o se è necessario fornire il proprio agente

Azure Pipelines supporta questi sistemi operativi:

L'agente di compilazione scelto dipende principalmente dagli strumenti usati per compilare il codice. Ad esempio, se si usa Xcode per compilare le applicazioni, è possibile scegliere un agente macOS. Se è necessario Visual Studio, è probabile che si scelga un agente Windows.

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

Un agente privato usa l'infrastruttura che si fornisce. L'agente può essere un sistema in esecuzione nel cloud o nel data center. Entrambi i sistemi funzionano, purché l'agente soddisfi i requisiti e possano connettersi ad Azure Pipelines. In questo modulo si userà una macchina virtuale in esecuzione in Azure, che viene fornito.

Quando è consigliabile usare il proprio agente di compilazione?

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 del sistema operativo e della sicurezza. È sufficiente definire la configurazione di compilazione che si vuole eseguire.

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

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

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

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 agenti ospitati, si condivide l'infrastruttura con altri utenti di Azure DevOps. Anche se in genere l'avvio della compilazione richiede solo pochi secondi, può richiedere più tempo a seconda del carico nel 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, si basa sugli strumenti di compilazione esistenti e sul codice compilato. Il completamento di una compilazione incrementale può richiedere meno tempo, perché il sistema dispone già di molti degli strumenti di compilazione e dei componenti dipendenti installati.

Poiché l'infrastruttura di compilazione è un compromesso, è responsabilità dell'utente assicurarsi che gli agenti di compilazione contengano le patch di sicurezza e software più recenti.

Come si configura un agente di compilazione privato?

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

Quando si configura un agente privato, si fornisce l'infrastruttura in cui vengono eseguite le compilazioni. Ciò offre flessibilità nel modo in cui si mettono in piedi e si gestiscono gli agenti.

È ad esempio possibile:

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

  • Automatizzare il processo: si apre il sistema ed si esegue uno script o uno strumento per installare gli strumenti di compilazione e il software agente. È possibile configurare l'agente dopo che il sistema viene online 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.

  • Creare un'immagine: si crea un'immagine o uno snapshot di un ambiente configurato. Usare quindi l'immagine per creare tutti i sistemi identici necessari nel pool.

La configurazione manuale è un buon modo per iniziare, perché consente di comprendere il processo. È anche il modo più rapido per configurare 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 sono una forma di automazione. Possono contribuire a risparmiare tempo, perché tutto il software è preconfigurato. Come compromesso, potrebbe essere necessario ricompilare periodicamente le immagini per incorporare le patch più recenti del sistema operativo e gli strumenti di compilazione. Packer di HashiCorp è uno strumento molto diffuso per la creazione di immagini.

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

Verificare le conoscenze

1.

Diciamo che stai creando un videogiochi. 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. Che tipo di agente di compilazione è possibile usare?

2.

Si supponga di creare un'applicazione in esecuzione in macOS, Linux e Windows. Come è possibile compilare l'app per ogni piattaforma di destinazione?

3.

Un agente di compilazione self-hosted: