Ejecución de canalizaciones con entornos de Anaconda
Azure Pipelines
Aprenda a configurar y usar Anaconda con Python en la canalización. Anaconda es una distribución de Python para ciencia de datos y 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.
El código del repositorio siguiente es una aplicación de Python sencilla. Para empezar, bifurca este repositorio en la cuenta GitHub cliente.
https://github.com/MicrosoftDocs/pipelines-anacondaInicie sesión en su organización de Azure DevOps y vaya a su proyecto.
En el proyecto, vaya a la página Pipelines (Canalizaciones). A continuación, elija la acción para crear una canalización.
Siga los pasos del asistente y seleccione primero GitHub como ubicación del código fuente.
Puede que se le redirija a GitHub para iniciar sesión. Si es así, escriba sus credenciales de GitHub.
Cuando aparezca la lista de repositorios, seleccione el repositorio de ejemplo anaconda.
Azure Pipelines analizará el código del repositorio y detectará un archivo
azure-pipelines.ymlexistente.Seleccione Run (Ejecutar).
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 Pipelines y, a continuación, edite el archivo.
Agregar conda a la ruta de acceso del sistema
En los agentes hospedados,conda se deja fuera de de forma predeterminada para evitar que su versión de Python entre en conflicto con otras versiones instaladas. El task.prependpath comando del agente lo pondrá a disposición de 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 conda create comando creará un entorno con los argumentos que se pasan.
- bash: conda create --yes --quiet --name myEnvironment
displayName: Create Anaconda environment
Desde YAML
Puede comprobar un archivo environment.yml en el repositorio que define 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 auto hospedado y no quita el entorno al final, se producirá un error en la siguiente compilación, ya que el entorno ya existe. Para resolverlo, use el --force argumento : conda env create --quiet --force --file environment.yml .
Instalación de paquetes desde Anaconda
El siguiente código YAML instala el scipy paquete en el entorno de Conda denominado 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 de Anaconda
Nota
Cada paso de compilación se ejecuta en su propio proceso.
Al activar un entorno de Anaconda, este editará y PATH realizará otros cambios en su proceso actual.
Por lo tanto, un entorno de Anaconda debe activarse por separado para 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é aparece 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, vea la pestaña "Hosted macOS" (MacOS hospedado) en Add conda to your system path (Agregar conda a la ruta de acceso del sistema).
¿Por qué mi compilación deja de responder en conda create un conda install paso o ?
Si olvida pasar --yes , Conda se detendrá y esperará la interacción del usuario.
¿Por qué mi script Windows deteniendo 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.
Vea ejemplos de uso de callcall
¿Cómo puedo ejecutar mis pruebas con varias versiones de Python?
Consulte Compilación de aplicaciones de Python en Azure Pipelines.