Pregunta ¿Cómo usar el plugin ANSIcolor en Jenkins?


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 al imprimir en iniciar sesión desde los archivos por lotes (plataforma 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.


32
2017-09-14 16:35


origen


Respuestas:


El conector de color ANSI transforma la salida de su consola en HTML. Si su salida contiene secuencias de escape ansi, entonces convierte estas secuencias de char especiales en HTML (de color). Solo puede configurar la asignación a través de 'Mapa de colores ANSI'.

Ejemplo:
\ x1b [31m se transforma color rojo html

Parece que su programa no usa secuencias de escape. Pero si escribiste tu propio software o script, puedes usar estas secuencias de escape.

Primer ejemplo BASH:

echo -e "\033[31mRed\033[0m"

Segundo ejemplo BASH:

printf "\033[31mRed\033[0m"

Si lo necesita, debe agregar una nueva secuencia a printf:

printf "\033[31mRed\033[0m\n"

Más a las secuencias de escape:
Inglés: http://en.wikipedia.org/wiki/ANSI_escape_code
Deutsch: http://de.wikipedia.org/wiki/Escape-Sequenz


10
2018-04-10 16:52



Hay mucha más documentación disponible sobre el plugin Jenkins-ANSIcolor aquí: https://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


7
2018-01-21 16:08



  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" ...)


7
2017-12-16 02:23



La salida de consola de Jenkins es un lugar donde puedes pasar una cantidad decente de tiempo tratando de descubrir qué salió mal (o tal vez ¿no?).

Los complementos de AnsiColor le dan la oportunidad de dar color a la salida monocromática de la consola Jenkins.

Guía paso a paso

  1. Instalar el plugin AnsiColor en la sección Entorno de compilación ver Color Salida de consola ANSIJenkins -
  2. Color Salida de consola ANSI -debería verse como

  3. TesterFenster Inside Ejecutar paso de shell agrega algo como:

set +x


info() {

echo "\033[1;33m[Info]    \033[0m $1"

}

error() {

echo "\033[1;31m[Error]   \033[0m $1"

}

success() {

echo "\033[1;32m[Success] \033[0m $1"

}



info "This is information message"

error "Houston we have a problem"

success "Great!!!"


echo "Foreground colors"

echo "\033[31m Red \033[0m"

echo "\033[32m Green \033[0m"

echo "\033[33m Yellow \033[0m"

echo "\033[34m Blue \033[0m"
siz
echo "\033[35m Magneta \033[0m"

echo "\033[36m Cyan \033[0m"


echo "Background colors"

echo "\033[41m Red \033[0m"

echo "\033[42m Green \033[0m"

echo "\033[43m Yellow \033[0m"

echo "\033[44m Blue \033[0m"

echo "\033[45m Magneta \033[0m"

echo "\033[46m Cyan \033[0m"


echo "Different combinations"

echo "\033[1;31m Red \033[0m"

echo "\033[1;4;37;42m Green \033[0m"

echo "\033[1;43m Yellow \033[0m"


set -x
deberías ver como tu salida


2
2018-04-28 16:50



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


2
2018-03-21 09:39



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 @ocodo escribió, cmd.exe (que se desencadena por Jenkins) no es un emulador de terminal, por lo que no admitirá 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.

  • Crea un script de ayuda en util/ansiGreen.py al igual que:
#!/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 puedes ver, %ansiOff% también se requiere, para terminar con colorear (Es simplemente "\033[0m" impreso a través de python). Todo lo demás después %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.


0
2017-08-24 08:40