Le pipeline YAML, come abbiamo avuto modo di capire dagli script e dagli articoli che abbiamo pubblicato su questo canale, ci offrono grandi vantaggi, sia in termini di riuso dei template per costruire pipeline più complesse mantenendo una certa organizzazione, sia in termini di versionamento e così via. Chi vuole iniziare ad approcciare YAML per le prime volte, troverà grande difficoltà in due aree principali: la prima è la complessità del dover scrivere la pipeline stessa, la seconda nel dover fare continui commit sul repository per poter verificare se effettivamente il codice YAML scritto è corretto.
Sebbene per risolvere il "problema dello schermo vuoto" nella costruzione della prima pipeline non ci siano soluzioni, se non quella di studiare la documentazione, analizzare i sample e fare un uso intensivo dell'assistant, per il secondo problema possiamo sfruttare una nuova API pubblicata da Microsoft per verificare localmente se lo YAML prodotto è valido. Per verificarlo, basterà inviare una chiamata così formattata:
POST https://dev.azure.com/{org}/{project}/_apis/pipelines/{pipelineId}/runs?api-version=5.1-preview { "PreviewRun": true, "YamlOverride": "# your new YAML here, optionally" }
Nel body della request dovremo andare a specificare, in maniera opzionale, il nuovo YAML rappresentante la pipeline nella proprietà YamlOverride e indicare in PreviewRun se vogliamo che venga espanso il template per verificare anche la sostituzione delle variabili. Se non specificato il nuovo codice YAML, verrà testata la pipeline esistente: sebbene questo scenario possa sembrare inutile, può diventare comodo per testare la validità di una pipeline durante la submission di una PR.
Il codice da sottomettere come YamlOverride, però, ha la limitazione di essere un singolo file. Qualora, infatti, la pipeline che andiamo a modificare faccia riferimento ad altri template, ad esempio residenti su altri repository, la validazione non andrà a buon fine.
Mandare la richiesta via curl potrebbe essere un po' complesso, in quanto bisognerebbe assicurarsi che venga fatto correttamente l'escape dello YAML prima di inviare la request, perciò possiamo pensare di utilizzare una estensione di VSTeam, un modulo di PowerShell utile a comunicare con Azure DevOps. Supponendo di avere la pipeline in un file pipeline.yml, possiamo invocare la richiesta di controllo della validità tramite:
PS C:\> $FilePath = ".\pipeline.yml" PS C:\> $yamlOverride = [string](Get-Content -raw $FilePath) PS C:\> Test-VSTeamYamlPipeline -Project {project} -PipelineId {pipelineId} -YamlOverride $yamlOverride
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare i controlled component per gestire una form con React
Inviare e-mail ai membri di un ruolo con Azure Monitor
Utilizzare gli operatori di RxJS per gestire operazioni asincrone con Javascript e TypeScript
Proteggere le risorse Azure da cancellazioni involontarie
DevOps for any developer with GitHub
Mobile Blazor Bindings
Eseguire più query che tornano un singolo dato in un solo comando con la libreria Entity Framework Plus
Introduzione a Microsoft Bot Framework
Produrre e condividere una variabile tra step in una pipeline YAML di Azure DevOps
Creare un component che renderizza una lista in JSX
Utilizzare l'optional chaining operator di TypeScript per semplificare il controllo di oggetti null o undefined
Cambiare automaticamente lo stato di un work item in una pipeline di Azure DevOps
I più letti di oggi
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Creare un record in C#
- Winget: un nuovo package manager per Windows
- il 18/02 c'è il #container & #devops day! https://aspit.co/ContainerDevOpsDay-21 Le iscrizioni sono sempre aperte e la Call For Paper è attiva fino al 28/01! #aspilive #cfp
- Utilizzare il CSS Grid Model per creare il layout di un sito
- Attesa e validazione manuale nelle pipeline YAML di Azure DevOps
- Montare una file share con Azure Container Instance