¿Cuál es el equivalente de YAML para liberar canalizaciones?

Aug 17 2020

He estado investigando Azure DevOps y algo me desconcierta: Microsoft parece recomendar encarecidamente el uso de canalizaciones YAML en lugar de las clásicas; bastante justo, pero necesitan reemplazar toda la funcionalidad que estaba en las tuberías clásicas. ¿Cómo se pretende reemplazar la funcionalidad de "canalización de lanzamiento" con canalizaciones YAML?

Entonces, por ejemplo, con las canalizaciones de versiones clásicas, podría configurar una canalización para implementar en producción que tuviera un disparador manual (consulte 'Manualmente por un usuario'):

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

¿Cuál es la canalización YAML equivalente a esto? Obviamente, no quiero un disparador que se implemente automáticamente en producción; siempre quiero que esa implementación se inicie de forma estrictamente manual, pero el artículo de ayuda no parece proporcionar ninguna alternativa de YAML.

Respuestas

1 LanceLi-MSFT Aug 18 2020 at 03:42

Como comenta Daniel anteriormente, la canalización de Yaml admite canalizaciones yaml de varias etapas para CD. Puede consultar Azure DevOps Pipelines - Multi-Stage Pipelines y YAML para entrega continua para obtener más detalles.

La canalización de varias etapas de Azure devops yaml y la canalización de versión clásica se pueden usar para CD, sin embargo, tienen alguna diferencia . Y, como sé, ninguna característica en la canalización de YAML puede ser equivalente a la manual triggerversión clásica.

Por ahora, el activador manual no es compatible con la canalización YAML, consulte esta discusión . La buena noticia es que el equipo de Producto ha considerado la solicitud de función y la nueva función está en Roadmap . (Quizás en plan para el tercer trimestre de 2020)

Según el equipo de allí: El alcance de la nueva característica que están pensando aquí es poder marcar una etapa como "comenzar siempre manualmente". Si hay otras etapas que dependen de esta etapa, entonces continuarán esperando hasta que esta etapa se haya ejecutado.

Es posible que manual triggerdebamos esperar un tiempo antes de que la característica se haga realidad en la canalización de Yaml. Espero que la nueva función satisfaga sus necesidades.

AlexanderVolok Aug 18 2020 at 10:10

Microsoft dice que sus equipos usan internamente flujo de lanzamiento estrategia de ramificación: Flujo de lanzamiento: cómo lo hacemos ramificación en el equipo VSTS

Release Flow significa que la rama de lanzamiento debe crearse para que se active el lanzamiento, que puede verse de esta manera:

releases / productname-sprint02

Por lo tanto, la creación de una rama de este tipo puede actuar como disparador manual

En la canalización YAML de varias etapas, la etapa de implementación de producción debe codificarse para que se active cuando la ejecución de la canalización sea el contexto de la rama de lanzamiento, lo cual no es difícil de hacer usando una condition:expresión y una que contiene una comprobación:

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

ps Mi blog reciente sobre un tema similar: Azure DevOps: canalizaciones YAML y estrategias de ramificación