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.
Inicie 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 de Anaconda.
Azure Pipelines analizará el código del repositorio y detectará un archivo
azure-pipelines.yml
existente.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 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 call
en una canalización.
¿Cómo puedo ejecutar mis pruebas con varias versiones de Python?
Consulte Compilación de aplicaciones de Python en Azure Pipelines.