Integrare pipeline devTest Labs e CI/CD DevOps
DevOps è una metodologia di sviluppo software che integra lo sviluppo software (Dev) con operazioni di sistema (Ops). Il sistema offre nuove funzionalità software, aggiornamenti e correzioni in linea con gli obiettivi aziendali.
La metodologia DevOps illustra anche:
- Progettazione di nuove funzionalità in base a obiettivi, modelli di utilizzo e feedback dei clienti.
- Correzione, ripristino e protezione avanzata del sistema in caso di problemi.
Un componente della metodologia DevOps è la pipeline di integrazione continua (CI) e recapito continuo (CD). Una pipeline CI/CD sposta informazioni, codice e risorse da un commit del controllo del codice sorgente tramite una serie di passaggi per produrre il sistema. I passaggi includono compilazione, test e versione.
È possibile usare Azure DevTest Labs nelle pipeline CI/CD. Questo articolo illustra l'uso di DevTest Labs nelle pipeline di compilazione e versione CI/CD in un ambiente aziendale.
Vantaggi di DevTest Labs nei flussi di lavoro DevOps
Un lab deve concentrarsi su un team che lavora in un'area di funzionalità. Questo stato attivo comune consente modifiche più veloci, limitando al contempo eventuali effetti negativi a un gruppo più piccolo. Le modifiche o i problemi si verificano nell'ambiente lab, senza influire su altri elementi.
Lo stato attivo comune consente di condividere risorse specifiche dell'area, ad esempio strumenti, script e modelli di Azure Resource Manager (ARM). Gli sviluppatori possono usare risorse condivise per creare macchine virtuali (VM) con tutto il codice, gli strumenti e la configurazione necessari. I modelli di Resource Manager creano macchine virtuali lab e ambienti lab con le risorse di Azure appropriate. I modelli creano risorse in modo dinamico o creando immagini di base con personalizzazioni.
Si consideri ad esempio uno scenario in cui il prodotto è un sistema autonomo che viene installato nel computer di un cliente. DevTest Labs può creare macchine virtuali lab in cui è installato software, artefatti e configurazioni del cliente, per un rapido test del codice del ciclo interno.
Ecco alcuni vantaggi dell'uso dei lab nei flussi di lavoro DevOps:
Accesso incentrato: L'uso di un lab come componente associa un ecosistema specifico a persone limitate. In genere, a un team o a un gruppo che lavora in un'area comune o a una funzionalità specifica è assegnato un lab.
Replica dell'infrastruttura nel cloud: Uno sviluppatore può configurare rapidamente un ecosistema di sviluppo che include una macchina virtuale per sviluppatori con codice sorgente e strumenti. Uno sviluppatore può anche creare un ambiente quasi identico alla configurazione di produzione, per velocizzare lo sviluppo di cicli interni.
Ambienti di pre-produzione: Un lab nella pipeline CI/CD può eseguire diversi ambienti di pre-produzione o computer contemporaneamente, per i test asincroni. È possibile distribuire e gestire infrastrutture di supporto e agenti di compilazione diversi in un lab.
Usare lab nelle pipeline CI/CD
La pipeline CI/CD è un componente DevOps critico. La pipeline integra il codice dalla richiesta pull di uno sviluppatore con il codice esistente e distribuisce il codice nell'ecosistema di produzione. Per l'integrazione di DevTest Labs, non tutte le risorse devono trovarsi in un lab. Ad esempio, è possibile configurare un host Jenkins all'esterno del lab per una risorsa più persistente. Ecco alcuni esempi specifici di integrazione dei lab nella pipeline CI/CD.
Compilare
La pipeline di compilazione crea un pacchetto di componenti da testare insieme e consegnare per il rilascio. La creazione dinamica dell'infrastruttura consente un maggiore controllo. I lab possono far parte della pipeline di compilazione come percorsi per gli agenti di compilazione e altre risorse di supporto. DevTest Labs può limitare l'accesso al lab, aumentando la sicurezza per gli agenti di compilazione e riducendo la possibilità di danneggiamento accidentale.
Con la possibilità di avere più ambienti in un lab, ogni compilazione può essere eseguita in modo asincrono. L'ID di compilazione fa parte delle informazioni sull'ambiente che identificano in modo univoco le risorse in una compilazione specifica.
Test
Una pipeline CI/CD può automatizzare la creazione di risorse di DevTest Labs come macchine virtuali e ambienti per test automatizzati e manuali. La pipeline usa artefatti o formule di informazioni di compilazione per creare macchine virtuali con configurazioni di test personalizzate diverse.
Versione
Il processo di rilascio può usare DevTest Labs per la verifica prima della distribuzione del codice. Il processo è simile al test. Le risorse di produzione non devono essere distribuite in DevTest Labs.
Personalizzazione
Azure Pipelines, un componente di Azure DevOps Services, ha attività esistenti per modificare macchine virtuali e ambienti all'interno di lab specifici. Azure Pipelines è un modo per gestire la pipeline CI/CD. È possibile integrare un lab in qualsiasi sistema che supporti la chiamata alle API REST, l'esecuzione di script di PowerShell o l'interfaccia della riga di comando di Azure.
Alcuni gestori di pipeline CI/CD hanno plug-in open source esistenti in grado di gestire le risorse di Azure e DevTest Labs. Potrebbe essere necessario usare script personalizzati per soddisfare le esigenze della pipeline. Quando si esegue un'attività, usare un'entità servizio con il ruolo appropriato, in genere Collaboratore, per accedere al lab.