In passato con Azure DevOps abbiamo già visto come poter effettuare una run di una pipeline a matrice, ovvero mettendo in input diversi valori che poi vengono combinati fra loro, per fare in modo che la pipeline sia una sola, ma che venga eseguita nelle varie condizioni generate dalla matrice degli input. https://www.dopsitalia.com/script/42/Esecuzione-Matrici-Pipeline-YAML-Azure-DevOps.aspx
Proseguendo nella nostra battaglia tra Azure DevOps e GitHub, vediamo oggi come si può realizzare uno scenario simile sfruttando un workflow. Prendiamo in esempio il seguente codice:
name: Dotnet Matrix on: [push] jobs: build: runs-on: ${{ matrix.os }} strategy: matrix: os: [ ubuntu-latest, windows-latest, macOS-latest ] dotnet: [ 3.1.x, 5.0.x, 6.0.x ] steps: - name: Show agent env: OS: ${{ matrix.os }} run: echo "Running on $OS" - name: Setup .NET Core uses: actions/setup-dotnet@v1 with: dotnet-version: ${{ matrix.dotnet }}
La pipeline verrà eseguita ad ogni commit su un branch e ha una matrice basata sul sistema operativo e su una versione di .NET specifica. Nel momento in cui viene triggerata, verrà generata una vera e propria matrice degli input forniti dal nodo strategy/matrix e quindi verranno combinate le versioni di .NET SDK a quelle del sistema operativo. Queste due variabili vengono poi usate per eseguire il flusso automatico su runner differenti e per fare, ad esempio, una build e l'esecuzione dei test di un'applicazione .NET Core su diverse versioni dell'SDK (per esempio tutte quelle che sono supportate).
In questo modo sarà facile supportare per la nostra applicazione più versioni di .NET e realizzare un sistema cross-platform. A workflow iniziato, possiamo osservare il seguente output, che, chiaramente, varierà in base al job messo in esecuzione:

Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Real world .NET Architecture
Continuous Deployment tramite GitOps
Effettuare un loop di una GitHub Action
Fare automaticamente il merge di una pull request con un workflow di GitHub
Creare velocemente microservice grazie a minimal API di ASP.NET Core 6
Gestire le chiamate a servizi esterni in ASP.NET Core e Blazor tramite Polly
devConf 2022
Innestare una query nel metodo Contains di Entity Framework Core
Creare automaticamente una issue di GitHub
Caricare automaticamente i dati delle relazioni in EF Core 6
Utilizzare la parola chiave var con lambda eExpression e method group in C# 10
Personalizzare le richieste con i rule set di Azure Front Door
I più letti di oggi
- VS 2005 e .NET Framework 2.0 SDK in italiano su MSDN
- ASP.NET MVC, Aree e Controller: risolvere le ambiguità
- Visual Basic 2019
- Confronto tra moduli in Javascript: ES e commonJS https://aspit.co/cem di @morwalpiz #javascript
- Limitare l'accesso in base all'IP con i web site di Windows Azure
- AI&ML Conference 2019 - Milano
- La nostra prova su strada di Windows Phone 7