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.

¿Cómo crear dependencia en las etapas de la canalización de Azure DevOps generadas en bucle?

Tengo un pipeline en el que creo etapas dinámicamente (basándome en un diccionario de parámetros). El problema es que las etapas se ejecutan en orden aleatorio en lugar del definido. Quería crear dependencias, pero tendría que usar un bucle for en rango para poder crear algo de lógica. ¿Hay otra forma de hacer que funcione en el orden correspondiente?

Desencadenador: ninguno
Parámetros:
  – nombre: Etapas
    tipo: objeto
    predeterminado: {
      Desarrollo: d-rg,
      Prueba: t-rg,
      Aceptación: a-rg,
      Producción: p-rg
    }

Etapas:
  – etapa: Pruebas
    trabajos:
      – trabajo: Ejecutar_pruebas
        pasos:
          – script: |
             python -m pip install –upgrade pip
             python -m pip install -r requirements.txt
           Mostrar nombre: Instalar módulos
          – script: |
             python -m pytest -v tests/*_tests.py
           Mostrar nombre: Ejecutar pruebas
  – $ {{cada etapa en parámetros.Etapas}}:
    – etapa: $ {{etapa.Key}}
      dependediendo de:
        – Pruebas
      condición: éxito (& amp; # 39; Pruebas & amp; # 39;)
      trabajos:
        – trabajo: Ejecutar_código_de_producción
          pasos:
            – tarea: PythonScript@0
              entradas:
                scriptSource: & amp; # 39; filePath & amp; # 39; # Opciones: ruta de archivo, en línea
                scriptPath: & amp; # 39; solución / main.py & amp; # 39;
                argumentos: $ (directorio) / $ (nombre_base) – $ {{etapa.Valor}}.yml $ (pat) $ (organización) $ (proyecto)
              Mostrar nombre: & amp; # 39; Creando $ (nombre_base) – $ {{etapa.Valor}} & amp; # 39;

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Puedes utilizar la propiedad dependsOn para crear una dependencia entre etapas. Esta propiedad te permite especificar qué etapas deben completarse antes de que la etapa actual pueda comenzar. Puedes utilizar la propiedad de condition para especificar una condición que debe cumplirse antes de que la etapa pueda comenzar. En este caso, puedes utilizar la condición de succeeded para especificar que la etapa de Tests debe completarse antes de que la etapa actual pueda comenzar.

    Por ejemplo:

    etapas:
      - etapa: Tests
        trabajos:
          - trabajo: Ejecutar_pruebas
            pasos:
              - script: |
                  python -m pip install --upgrade pip
                  python -m pip install -r requirements.txt
                displayName: Instalar módulos
              - script: |
                  python -m pytest -v tests/*_tests.py
                displayName: Ejecutar pruebas
      - ${{ each stage in parameters.Stages }}:
        - etapa: ${{stage.Key}}
          dependsOn: 
            - Tests
          condition: succeeded('Tests')
          trabajos:
            - trabajo: Ejecutar_Código_Producción
              pasos:
                - tarea: PythonScript@0
                  inputs:
                    scriptSource: 'filePath' # Opciones: filePath, inline
                    scriptPath: 'solution/main.py'
                    arguments: $(directory)/$(base_name)-${{stage.Value}}.yml $(pat) $(organization) $(project)
                  displayName: 'Creando $(base_name)-${{stage.Value}}'
    

Comments are closed.