Qual è l'equivalente YAML delle pipeline di rilascio?
Ho esaminato Azure DevOps e qualcosa mi lascia perplesso: sembra che Microsoft stia fortemente raccomandando l'uso di pipeline YAML invece di quelle classiche; abbastanza giusto, ma devono sostituire tutte le funzionalità che erano nelle pipeline classiche. Come intendo sostituire la funzionalità "pipeline di rilascio" con pipeline YAML?
Quindi, ad esempio, con le pipeline di rilascio classiche, potrei configurare una pipeline da distribuire alla produzione che aveva un trigger manuale (vedi "Manualmente da un utente"):
https://docs.microsoft.com/en-us/azure/devops/pipelines/release/triggers?view=azure-devops#pull-request-triggers
Qual è l'equivalente della pipeline YAML? Ovviamente non voglio un trigger che si distribuisca automaticamente alla produzione - desidero sempre che la distribuzione venga avviata rigorosamente manualmente - ma l'articolo della guida non sembra fornire alcuna alternativa YAML.
Risposte
Come commenta Daniel sopra, la pipeline Yaml supporta le pipeline yaml a più stadi per CD. Puoi controllare Azure DevOps Pipelines - Multi-Stage Pipelines e YAML per la consegna continua per maggiori dettagli.
La pipeline multistadio Azure devops yaml e la pipeline di rilascio classico possono essere usate entrambe per CD, tuttavia presentano alcune differenze . E come so, nessuna funzionalità nella pipeline YAML può essere equivalente alla versione manual trigger
classica.
Per ora il trigger manuale non è supportato nella pipeline YAML, vedere questa discussione . La buona notizia è che il team del prodotto ha considerato la richiesta di funzionalità e la nuova funzionalità è su Roadmap . (Forse in programma per il Q3 2020)
Secondo il team lì: lo scopo della nuova funzionalità che stanno pensando qui è di poter contrassegnare una fase come "inizia sempre manualmente". Se ci sono altre fasi che dipendono da questa fase, quelle continueranno ad attendere fino a quando questa fase non è stata eseguita.
Potremmo dover aspettare un po 'di tempo prima che la manual trigger
funzione diventi realtà nella pipeline di Yaml. Spero che la nuova funzionalità soddisfi le tue esigenze.
Microsoft dice che le loro squadre utilizzano internamente di uscita del flusso strategia di ramificazione: uscita flusso: come lo facciamo Branching sul VSTS squadra
Flusso di rilascio significa che il ramo di rilascio deve essere creato per attivare il rilascio, che può apparire in questo modo:
release / nomeprodotto-sprint02
Pertanto, la creazione di un tale ramo può fungere da trigger manuale
Nella pipeline YAML multistadio, la fase di distribuzione della produzione dovrebbe essere codificata per essere attivata quando l'esecuzione della pipeline è il contesto del ramo di rilascio, cosa che non è difficile da fare utilizzando condition:
un'espressione e che contiene un controllo:
${{ startsWith(variables['Build.SourceBranch'], 'refs/heads/releases')
ps Il mio recente blog sull'argomento simile: Azure DevOps - pipeline YAML e strategie di ramificazione