Ejecución de canalizaciones con entornos Anaconda

Azure DevOps Services

Aprenda a configurar y usar Anaconda con Python en la canalización. Anaconda es una distribución de Python para la ciencia de datos y el aprendizaje automático.

Introducción

Siga estas instrucciones para configurar una canalización para una aplicación de Python de ejemplo con el entorno Anaconda.

  1. Inicie sesión en su organización de Azure DevOps y vaya a su proyecto.

  2. En el proyecto, vaya a la página Pipelines (Canalizaciones). A continuación, elija la acción para crear una canalización.

  3. Siga los pasos del asistente y seleccione primero GitHub como ubicación del código fuente.

  4. Puede que se le redirija a GitHub para iniciar sesión. Si es así, escriba sus credenciales de GitHub.

  5. Cuando aparezca la lista de repositorios, seleccione el repositorio de ejemplo de Anaconda.

  6. Azure Pipelines analizará el código del repositorio y detectará un archivo azure-pipelines.yml existente.

  7. Seleccione Run (Ejecutar).

  8. Se inicia una nueva ejecución. Espere a que finalice.

Sugerencia

Para realizar cambios en el archivo YAML como se describe en este tema, seleccione la canalización en la página Canalizaciones y, luego, haga clic en Editar para modificar el archivo azure-pipelines.yml.

Adición de conda a la ruta de acceso del sistema

En los agentes hospedados, conda se deja fuera de PATH de forma predeterminada para evitar que su versión de Python entre en conflicto con otras versiones instaladas. El comando de agente task.prependpath hará que esté disponible en todos los pasos posteriores.

- bash: echo "##vso[task.prependpath]$CONDA/bin"
  displayName: Add conda to PATH

Creación de un entorno

Desde argumentos de la línea de comandos

El comando conda create creará un entorno con los argumentos que se le pasen.

- bash: conda create --yes --quiet --name myEnvironment
  displayName: Create Anaconda environment

Desde YAML

Puede insertar un archivo environment.yml en el repositorio que defina la configuración de un entorno de Anaconda.

- script: conda env create --quiet --file environment.yml
  displayName: Create Anaconda environment

Nota

Si usa un agente autohospedado y no quita el entorno al final, recibirá un error en la siguiente compilación, puesto que el entorno ya existe. Para resolverlo, use el argumento --force: conda env create --quiet --force --file environment.yml.

Nota

Si usa agentes autohospedados que comparten almacenamiento y ejecuta trabajos en paralelo mediante los mismos entornos de Anaconda, puede haber conflictos entre esos entornos. Para resolverlos, use el argumento --name y un identificador único como valor de argumento, como una concatenación con la variable de compilación $(Build.BuildNumber).

Instalación de paquetes desde Anaconda

El siguiente código YAML instala el paquete scipy en el entorno de conda llamado myEnvironment.

- bash: |
    source activate myEnvironment
    conda install --yes --quiet --name myEnvironment scipy
  displayName: Install Anaconda packages

Ejecución de pasos de canalización en un entorno Anaconda

Nota

Cada paso de compilación se ejecuta en su propio proceso. Cuando se activa un entorno Anaconda, se edita el valor PATH y se realizan otros cambios en su proceso actual. Por lo tanto, un entorno Anaconda debe activarse por separado en cada paso.

- bash: |
    source activate myEnvironment
    python -m pytest --junitxml=junit/unit-test.xml
  displayName: pytest

- task: PublishTestResults@2
  inputs:
    testResultsFiles: 'junit/*.xml'
  condition: succeededOrFailed()

Preguntas más frecuentes

¿Por qué recibo el error "Permiso denegado"?

En macOS hospedado, el usuario del agente no tiene la propiedad del directorio donde está instalado Miniconda. Para obtener una corrección, consulte la pestaña "macOS hospedado" en Adición de conda a la ruta de acceso del sistema.

¿Por qué mi compilación deja de responder en un paso conda create o conda install?

Si olvida pasar --yes, conda se detendrá y esperará la interacción del usuario.

¿Por qué mi script de Windows se detiene después de activar el entorno?

En Windows, activate es un script de Batch. Debe usar el comando call para reanudar la ejecución del script después de activarlo. Consulte ejemplos de uso de callen una canalización.

¿Cómo puedo ejecutar mis pruebas con varias versiones de Python?

Consulte Compilación de aplicaciones de Python en Azure Pipelines.