Ci sono alcuni scenari, come ad esempio lo sviluppo e la distribuzione di librerie, che richiedono che i test vengano eseguiti su diversi tipi di condizioni per assicurarci che la librerie siano sempre funzionanti. Questo è vero storicamente, ma si è ancor di più accentuato dall'introduzione di .NET Core in quanto il codice della libreria può girare non più solo su Windows, ma anche su altri sistemi operativi.
Per simulare quest'ultimo scenario, è vero che per quanto riguarda le pipeline possiamo utilizzare i template YAML. Questi infatti prevedono una sequenza di operazioni e possiamo anche fornire in input diversi tipi di parametri, fra cui l'agent con cui eseguire le operazioni. Tuttavia, Azure DevOps fornisce out-of-the-box una strategia, definita "a matrice", che permette di eseguire lo stesso flusso di codice in condizioni differenti.
strategy: matrix: linux: imageName: 'ubuntu-latest' mac: imageName: 'macos-10.14' windows: imageName: 'windows-latest' pool: vmImage: $(imageName) steps: - script: dotnet restore - script: dotnet build --configuration Debug --no-restore - script: dotnet test --configuration Debug - script: dotnet publish --configuration Release
Come si può vedere dall'esempio, ci è sufficiente specificare a livello di job la keyword strategy per spiegare all'agent che ci saranno diverse modalità di esecuzione. In questo caso, stiamo solamente andando a definire delle variabili e, queste, verranno usate nei passaggi successivi. Infatti, il parametro imageName prende un valore diverso rispetto alla configurazione della matrice e questo verrà riutilizzato come parametro del pool, facendo in modo che la pipeline venga eseguita in automatico non solo su un agent, ma addirittura su tre, mantenendo lo stesso processo di build e release definito in precedenza per buildare, ad esempio, solo con Windows.
Sebbene il job di default sia solamente uno, possiamo vedere come Azure DevOps all'avvio della pipeline schedulerà in automatico l'esecuzione su tutti gli agent specificati dalla matrice:

Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare un numero per gestire la concorrenza ottimistica con SQL Server ed Entity Framework
Eseguire script pre e post esecuzione di un workflow di GitHub
Recuperare automaticamente un utente e aggiungerlo ad un gruppo di Azure DevOps
Utilizzare i variable font nel CSS
Rendere le variabili read-only in una pipeline di Azure DevOps
Utilizzare Azure Cosmos DB con i vettori
Ordine e importanza per @layer in CSS
Conoscere il rendering Server o WebAssembly a runtime in Blazor
Collegare applicazioni server e client con .NET Aspire
Filtrare i dati di una QuickGrid in Blazor con una drop down list
Creare una libreria CSS universale: Immagini