es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Ejecute una etapa del Azure Release Pipeline si alguna de las etapas dependientes se ejecuta.

Tenemos una superficie de implementación bastante grande, digamos que desplegamos 10 aplicaciones. Para las actualizaciones de parches, a veces solo desplegamos una aplicación y me gustaría que se ejecute una etapa después de que se despleguen las 10 aplicaciones o si solo se despliega una. Un diagrama simplificado se ve así. El paso “Hacer algo” se ejecutará solo si se ejecutan las tres etapas de la aplicación y no quiero tener que duplicarlo para cada aplicación, así que estoy buscando una mejor manera. Supongo que podría vivir con ello si se ejecuta solo una vez en cualquier etapa dependiente exitosa (no necesita esperar a todas ellas).

Tags:  ,

Answer

  1. Avatar for davy.ai

    Una solución podría ser crear una nueva etapa después de todas las etapas de la aplicación en la canalización, la cual es condicional al éxito de cualquier etapa anterior. Esto se puede lograr utilizando los campos dependsOn y condition en la canalización YAML.

    Ejemplo de canalización YAML:

    trigger:
      - master
    
    pool:
      vmImage: 'ubuntu-latest'
    
    stages:
    - stage: Deploy_App1
      jobs:
      - job: Deploy
        steps:
        - script: echo "Desplegando App1..."
    
    - stage: Deploy_App2
      jobs:
      - job: Deploy
        steps:
        - script: echo "Desplegando App2..."
    
    - stage: Deploy_App3
      jobs:
      - job: Deploy
        steps:
        - script: echo "Desplegando App3..."
    
    - stage: Do_Something
      dependsOn: 
        - Deploy_App1
        - Deploy_App2
        - Deploy_App3
      condition: succeeded()
    
    - stage: Conditional_Do_Something
      dependsOn: 
        - Deploy_App1
        - Deploy_App2
        - Deploy_App3
      condition: succeededOrFailed()
      jobs:
      - job: Do_Something
        steps:
        - script: echo "Haciendo algo..."
    

    En este ejemplo, la etapa Do_Something se ejecutará después de que las tres etapas de la aplicación se hayan completado con éxito. La etapa Conditional_Do_Something se ejecutará independientemente de cuántas aplicaciones se desplieguen, siempre y cuando al menos una etapa tenga éxito o falle. El campo condition está configurado como succeededOrFailed() para lograr este comportamiento.

    Este enfoque evita duplicar el paso Hacer algo para cada aplicación y permite flexibilidad en el proceso de despliegue.

Comments are closed.