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
Gestire domini wildcard in Azure Container Apps
Configurare dependabot per aggiornare le dipendenze di terze parti con GitHub Actions
Determinare lo stato di un pod in Kubernetes
Verificare la provenienza di un commit tramite le GitHub Actions
Sfruttare al massimo i topic space di Event Grid MQTT
Utilizzare politiche di resiliency con Azure Container App
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Copiare automaticamente le secret tra più repository di GitHub
Visualizzare le change sul plan di Terraform tramite le GitHub Actions
Usare lo spread operator con i collection initializer in C#
Evitare la script injection nelle GitHub Actions