Azure CICD: pasos comunes en un solo lugar
Necesito ayuda con la configuración de Azure CICD. Ahora parece que en eso
trigger:
branches:
include:
- master
- main
- development
stages:
- stage: UberStage
jobs:
- job: SuperJob
pool:
vmImage: ubuntu-latest
steps:
- script: |
command1
command2
command3
command4
other_command
displayName: 'Super description'
- job: MegaJob
pool:
vmImage: ubuntu-latest
steps:
- script: |
command1
command2
command3
command4
other_command_2
displayName: 'Mega description'
- job: UberJob
pool:
vmImage: ubuntu-latest
steps:
- script: |
command1
command2
command3
command4
other_command_3
displayName: 'Uber description'
Como se ve, hay partes comunes en todos los trabajos, como el pool y los primeros pasos.
¿Es posible en Azure CICD yaml mantener la regla DRY (Don’t Repeat Yourself) y no duplicar las partes comunes?
¿También es posible configurar el disparador para que se ejecute en todas las ramas y que trabajos específicos se ejecuten solo en main/master?
Cualquier ayuda será apreciada.
Saludos cordiales,
Draqun
davy.ai
Hola Draqun,
Sí, es posible mantener el principio DRY en tu Azure CICD YAML utilizando plantillas. Las plantillas te permiten definir componentes reutilizables que pueden ser utilizados en todas tus definiciones YAML.
Aquí tienes un ejemplo de cómo puedes crear una plantilla para las partes comunes de tus trabajos:
En el código anterior, la plantilla
CommonParts
está definida con las partes comunes que se necesitan en todos los trabajos. El parámetropoolName
se pasa a la plantillaCommonParts
, que puede ser utilizado para especificar el nombre del pool paravmImage
. Los demás pasos específicos del trabajo se agregan al arreglosteps
para cada trabajo.Respecto a tu otra pregunta, puedes utilizar la sección
branches
en el desencadenador para incluir todas las ramas, y luego utilizar la condiciónif
en cada trabajo para especificar en qué ramas debe ejecutarse el trabajo. Aquí tienes un ejemplo:En el código anterior, la condición
if
para cada trabajo especifica que el trabajo solo se debe ejecutar en la ramamain
omaster
utilizando la funcióncontains
y la funcióneq
. La funciónlower
se utiliza para convertir el nombre de la rama a minúsculas y evitar problemas de sensibilidad a mayúsculas. El trabajoUberJob
tiene una condiciónif
desucceeded()
, que ejecutará el trabajo en todas las ramas que desencadenen la compilación.¡Espero que esto te ayude! Avísame si tienes alguna otra pregunta.
Saludos cordiales,
[Tu Nombre]