plugins - ¿Cómo usar el plugin ANSIcolor en Jenkins?




ansi-colors (4)

  1. Verifique dos veces que el software realmente esté emitiendo colores ANSI. Por ejemplo, un script bash que ejecute este eco producirá color con el plugin AnsiColor instalado, pero producirá secuencias de escape defectuosas en la salida de la consola sin ningún complemento.

En BASH:

echo -e '\033[35mPurple!\033[0m'
  1. Verifique la configuración de su proyecto, verifique el "Entorno de compilación" y asegúrese de que esté marcada la opción "Salida de consola ANSI en color".

  2. Si no puede encontrar la sección "Entorno de compilación", vaya a Administrar complementos para verificar que el complemento correcto esté realmente instalado.
    (Recientemente instalé el complemento "Ansible" en lugar de "AnsiColor" ...)

He instalado el plugin ANSI-color para Jenkins. En los trabajos, he activado ese complemento con el perfil predeterminado 'xterm'.

No puedo encontrar la forma de colorear la salida del registro de la consola cuando imprimo en el registro desde los archivos por lotes (plataforma de Windows).

La documentación sobre

https://wiki.jenkins-ci.org/display/JENKINS/AnsiColor+Plugin

no es útil. No hay ejemplos de cómo imprimir en color.

Intenté varios comandos de eco / impresión diferentes, pero no puedo hacer que los colores funcionen.

Cualquier pista apreciada.


El OP preguntó explícitamente sobre el uso de AnsiColor Jenkins Plugin en Windows, así que aquí está mi respuesta:

cmd.exe no es un emulador de terminal

Como escribió @ocodo, cmd.exe (que se desencadena por Jenkins) no es un emulador de terminal, por lo que no será compatible con la salida ANSI de los comandos por lotes de forma predeterminada. Entonces esto no es compatible con Windows.

Estas pruebas no tuvieron éxito en Jenkins usando Windows Batch build step:

echo \e[33m hello \e[0m
echo \033[33m hello \033[0m
echo \x1b[33m hello \x1b[0m
echo \27[33m hello \27[0m
echo \[33m hello \[0m
echo ←[33m hello ←[0m

Última línea: para inyectar un personaje ESC en un formulario de prueba de Firefox, presione alt + 27, que también es la secuencia de escape en la mayoría de los editores. más información aquí: http://www.robvanderwoude.com/ansi.php#AnsiColor y https://groups.google.com/forum/#!topic/jenkinsci-users/0OcjlZQfqrk

Una solución: use la impresión de Python para colorear texto

Los trabajos de compilación que usan Python para la salida de consola no tuvieron ningún problema con AnsiColor, por lo que si Python está disponible en su entorno donde la salida de la consola es generada por una secuencia de comandos, puede inyectar códigos ANSI desde allí. Así es como trabajé alrededor para que sea colorido.

  • Cree una secuencia de comandos de ayuda en util/ansiGreen.py manera:
#!/usr/bin/env python
print("\033[32m");
  • Regístrese como env var en el nivel de su configuración de compilación global:
set ansiGreen=python %cdRootPath%util\ansiGreen.py
  • Añádelo a tus scripts:
call make-some-tests.bat
if %errorlevel% gtr 0 (
    %ansiRed%
    echo [ERROR] You screwed up trunk!
    %ansiOff%
)

Como puede ver, también se requiere %ansiOff% para finalizar con el color (simplemente es "\033[0m" impreso a través de python). Todo lo demás después de %ansiRed% estará en rojo .

Este script se ejecuta en un esclavo Jenkins. Establecer y obtener un entorno directamente dentro del proceso de compilación por lotes de Jenkins es otro desafío.

Es un poco feo, pero después de mucha investigación parece ser la mejor solución para permitir que AnsiColor sea devuelto a un maestro de Windows Jenkins desde un esclavo de Windows Jenkins.


Esto solo funciona desde la consola de Jenkins, y no desde los scripts actuales que salen a su consola.


Hay mucha más documentación disponible en el plugin Jenkins-ANSIcolor aquí: github.com/dblock/jenkins-ansicolor-plugin

No veía colores porque estaba usando colores de "alta intensidad" (en el rango de los 90) y estos no son compatibles. Tengo que mantener los colores en los años 30