Jenkins en Windows se detiene después de activar Python VENV.
Al ejecutar una compilación en Windows, Jenkins no logra activar el entorno virtual de Python.
Configuré el servidor Jenkins en Windows 10 para ejecutar pruebas unitarias en Python. Creé un “proyecto libre”. En “Compilación”, seleccioné “Ejecutar comando por lotes de Windows” e ingresé estos comandos:
echo 'ANTES DE LA ACTIVACIÓN'
C:\Development\venvs\venv366-001\Scripts\activate.bat
echo 'DESPUÉS DE LA ACTIVACIÓN'
Inicio la compilación haciendo clic en “Compilar ahora”. La compilación es exitosa y la salida de la consola muestra lo siguiente:
C:\ProgramData\Jenkins.jenkins\workspace\DemoCalculator>echo 'ANTES DE LA ACTIVACIÓN'
'ANTES DE LA ACTIVACIÓN'
C:\ProgramData\Jenkins.jenkins\workspace\DemoCalculator>C:\Development\venvs\venv366-001\Scripts\activate.bat
Finished: SUCCESS
Observe que la consola no indica DESPUÉS DE LA ACTIVACIÓN. En la práctica, agregaría comandos no triviales después de la activación. Este ejemplo solo muestra que nada después de la activación se ejecuta.
¿Cómo puedo hacer que se ejecuten los comandos posteriores?
davy.ai
Existen varias soluciones posibles para este problema:
Este comando activa el entorno virtual y luego ejecuta pytest en el directorio de pruebas. Ten en cuenta que el comando “call” es necesario para permitir que el archivo por lotes devuelva el control a Jenkins después de la activación.
Usar el complemento “Python” para administrar el entorno virtual dentro de Jenkins. En lugar de confiar en un entorno virtual externo, puedes usar el complemento Python para Jenkins, que te permite especificar un entorno virtual para cada compilación. De esta manera, Jenkins puede administrar la activación y desactivación del entorno virtual automáticamente. Para usar el complemento Python:
C:\Development\venvs\venv366-001
.pytest tests/
.Asegúrate de que el script de activación solo contenga comandos válidos de Windows. El script por lotes de activación podría ejecutar comandos de Linux o comandos no compatibles con Windows que provocarán el fallo del archivo por lotes. Asegúrate de que los comandos del script sean compatibles con Windows antes de ejecutar el archivo en Jenkins.
Al implementar una de las soluciones anteriores, la compilación de Jenkins debería poder activar el entorno virtual de Python y ejecutar los comandos posteriores con éxito.