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 puedo usar condicionalmente un contenedor en Azure Pipelines?

Tengo un trabajo AzP con una matriz donde se necesita ejecutar en un contenedor (prueba de compilador antiguo). ¿Cómo puedo ejecutar condicionalmente el trabajo dentro del contenedor? Intenté lo siguiente pero eso no parece funcionar, es decir, el contenedor nunca se usa aunque estoy bastante seguro de que seguí todas las instrucciones de la documentación.

etapas:
  - Etapa: Prueba
    trabajos:
      - trabajo: 'Linux'
        estrategia:
          matriz:
            GCC_10:
              CXX: g++-10
              IMAGEN_VM: ubuntu-20.04
            GCC_9:
              CXX: g++-9
              IMAGEN_VM: ubuntu-20.04
            Clang_3_7:
              CXX: clang++-3.7
              IMAGEN_VM: ubuntu-20.04
              CONTENEDOR: ubuntu:16.04
        grupo:
          imagenVM: $(IMAGEN_VM)
        ${{ if variables['CONTENEDOR'] }}:
          contenedor:
            imagen: $[ variables['CONTENEDOR'] ]
            opciones: "--name ci-container -v /usr/bin/docker:/tmp/docker:ro"
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para ejecutar condicionalmente un trabajo dentro de un contenedor en Azure Pipelines usando un pipeline YAML, puede utilizar la instrucción if para verificar el valor de la variable CONTAINER.

    Aquí hay un ejemplo de cómo modificar el código YAML:

    stages:
      - stage: Test
        jobs:
          - job: 'Linux'
            strategy:
              matrix:
                GCC_10:
                  CXX: g++-10
                  VM_IMAGE: ubuntu-20.04
                GCC_9:
                  CXX: g++-9
                  VM_IMAGE: ubuntu-20.04
                Clang_3_7:
                  CXX: clang++-3.7
                  VM_IMAGE: ubuntu-20.04
                  CONTAINER: ubuntu:16.04
            pool:
              vmImage: $(VM_IMAGE)
            container: 
              ${{ if variables['CONTAINER'] }}:
                image: $[ variables['CONTAINER'] ]
                options:  "--name ci-container -v /usr/bin/docker:/tmp/docker:ro"
    

    Para habilitar el uso de un contenedor para el trabajo, debe agregar el campo container y establecer el valor en las condiciones a verificar. Aquí, estamos usando ${{ if variables['CONTAINER'] }}: para verificar si la variable CONTAINER está configurada, y si lo está, estamos ejecutando el trabajo dentro del contenedor especificado por el campo image.

    Tenga en cuenta que la instrucción if debe estar envuelta con ${{ }}: para evaluarse dinámicamente durante la ejecución.

Comments are closed.