Passare alla pipeline YAML porta diversi vantaggi, come abbiamo avuto modo di vedere in passato. Uno di questi è sicuramente la possibilità di utilizzare i template per riutilizzare diverse parti di codice, così come avviene in C# per le funzioni. Esattamente come in C# (e in altri linguaggi di programmazione), è infatti possibile richiamare uno stesso task (o una serie di essi) in sequenza sfruttando un classico "ciclo".
Supponendo di dover eseguire N script di SQL all'interno di un database, possiamo pensare di passare i nomi dei file come input a livello di parametri:
parameters: - name: listOfSqlScripts type: object default: - one.sql - two.sql
E quindi, al contrario di quanto avviene con le pipeline "classiche", definite tramite UI, in cui dobbiamo procedere a copia-incolla e cambiare tutti i parametri, con YAML possiamo applicare un ciclo each a tutti i task che dovranno essere ripetuti. In questo caso, andiamo a stampare il nome del file SQL che verrà eseguito sul database in oggetto:
steps: - ${{ each value in parameters.listOfSqlScripts }}: - script: echo ${{ value }}
Il codice stamperà, come ci aspettiamo, one.sql al primo giro e two.sql al secondo. Supponendo che ci siano N task da effettuare come parte dello stesso ciclo, come operazioni in sequenza (immaginiamo la stampa del file e poi l'operazione vera e propria), non servirà creare più cicli identici, ma sarà più che sufficiente riutilizzare la stessa identazione a livello di codice YAML:
steps: - ${{ each value in parameters.listOfStrings }}: - script: echo ${{ value }} - script: sqlpackage.exe ...
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare politiche di resiliency con Azure Container App
Reactive form tipizzati con modellazione del FormBuilder in Angular
Disabilitare automaticamente un workflow di GitHub
Gestire errori funzionali tramite exception in ASP.NET Core Web API
Effettuare lo stream della risposta in ASP.NET Core tramite IAsyncEnumerable
Visualizzare le change sul plan di Terraform tramite le GitHub Actions
Copiare automaticamente le secret tra più repository di GitHub
Effettuare il pull di git LFS in un workflow di GitHub
Eseguire operazioni sui blob con Azure Storage Actions
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Mascherare l'output di un valore all'interno dei log di un workflow di GitHub