Qual é o equivalente YAML para liberar pipelines?

Aug 17 2020

Estive pesquisando o Azure DevOps e algo me intrigou: a Microsoft parece estar recomendando fortemente o uso de pipelines YAML em vez dos clássicos; bastante justo, mas eles precisam substituir toda a funcionalidade que estava em pipelines clássicos. Como devo substituir a funcionalidade "pipeline de lançamento" por pipelines YAML?

Assim, por exemplo, com pipelines de lançamento clássicos, eu poderia configurar um pipeline para implantar na produção que tinha um acionador manual (consulte 'Manualmente por um usuário'):

https://docs.microsoft.com/en-us/azure/devops/pipelines/release/triggers?view=azure-devops#pull-request-triggers

Qual é o pipeline YAML equivalente a isso? Obviamente, não quero um gatilho que implante automaticamente na produção - sempre quero que a implantação seja iniciada estritamente manualmente - mas o artigo de ajuda não parece fornecer nenhuma alternativa YAML.

Respostas

1 LanceLi-MSFT Aug 18 2020 at 03:42

Como Daniel comenta acima, o pipeline Yaml oferece suporte a pipelines yaml de vários estágios para CD. Você pode verificar Azure DevOps Pipelines - Multi-Stage Pipelines e YAML para entrega contínua para obter mais detalhes.

O pipeline de vários estágios do Azure devops yaml e o pipeline de lançamento clássico podem ser usados ​​para CD, no entanto, eles têm algumas diferenças . E, como eu sei, nenhum recurso no pipeline YAML pode ser equivalente ao da manual triggerversão clássica.

Por enquanto, o acionador manual não é compatível com o pipeline YAML, consulte esta discussão . A boa notícia é que a equipe de Produto considerou a solicitação de recurso e o novo recurso está no Roadmap . (Talvez no plano para 2020 Q3)

De acordo com a equipe lá: O escopo do novo recurso que eles estão pensando aqui é poder marcar uma fase como "sempre iniciar manualmente". Se houver outros estágios que dependam desse estágio, eles continuarão a esperar até que esse estágio seja executado.

Podemos ter que esperar algum tempo antes que o manual triggerrecurso se torne realidade no pipeline do Yaml. Espero que o novo recurso atenda às suas necessidades.

AlexanderVolok Aug 18 2020 at 10:10

Microsoft diz que suas equipes usam internamente Fluxo de lançamento estratégia de ramificação: Fluxo de lançamento: Como fazemos ramificação na equipe de VSTS

Fluxo de liberação significa que o branch de liberação deve ser criado para fazer com que a liberação seja acionada, que pode ter a seguinte aparência:

releases / productname-sprint02

Portanto, a criação de tal ramo pode atuar como o gatilho manual

No pipeline YAML de vários estágios, o estágio de implantação de produção deve ser codificado para ser acionado quando a execução do pipeline for o contexto do branch de liberação, o que não é difícil de fazer usando um condition:e uma expressão que contém uma verificação:

${{ startsWith(variables['Build.SourceBranch'], 'refs/heads/releases')

ps Meu blog recente sobre o assunto semelhante: Azure DevOps - pipelines YAML e estratégias de ramificação