¿Cuál es el equivalente de YAML para liberar canalizaciones?
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
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 trigger
versió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 trigger
debamos 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.
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