web-dev-qa-db-fra.com

Comment utiliser le plugin ANSIcolor dans Jenkins?

J'ai installé le plugin ANSI-color pour Jenkins . Dans les Jobs, j'ai activé ce plugin avec le profil par défaut 'xterm'.

Je ne vois pas comment coloriser la sortie du journal de la console lors de l'impression dans le journal À partir des fichiers de commandes (plateforme Windows).

La documentation sur 

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

n'est pas utile. Il n'y a pas d'exemple pour imprimer réellement en couleur. 

J'ai essayé plusieurs commandes echo/print différentes, mais je ne parviens pas à faire fonctionner les couleurs.

Tout indice apprécié.

34
Stefan Schroeder

Le plug-in ANSI-color transforme la sortie de votre console en HTML. Si votre sortie contient des séquences d'échappement ansi, elle convertit ces séquences de caractères spéciaux en HTML (coloré). Vous pouvez uniquement configurer le mappage via «Carte de couleurs ANSI».

Exemple:
\ x1b [31m est transformée en couleur html rouge 

Il semble que votre programme n'utilise pas de séquences d'échappement. Mais si vous avez écrit votre propre logiciel ou script, vous pouvez utiliser ces séquences Escape.

1er exemple BASH:

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

2ème exemple BASH:

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

Si vous en avez besoin, vous devez ajouter une séquence de nouvelle ligne à printf:

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

Plus à échapper des séquences:
English: http://fr.wikipedia.org/wiki/ANSI_escape_code
Deutsch: http://de.wikipedia.org/wiki/Escape-Sequenz

9
Mirko Ebert

Il existe beaucoup plus de documentation sur le plugin Jenkins-ANSIcolor ici: https://github.com/dblock/jenkins-ansicolor-plugin

Je ne voyais pas de couleurs parce que j'utilisais des couleurs "de haute intensité" (dans la gamme des années 90) et que celles-ci ne sont pas prises en charge. Je dois coller aux couleurs des années 30

8
hamx0r
  1. Vérifiez à nouveau que le logiciel affiche réellement les couleurs ANSI. Par exemple, un script bash exécutant cet écho produira une couleur avec le plug-in AnsiColor installé, mais produira des séquences d'échappement gâchées dans la sortie de la console sans plug-in.

À BASH:

echo -e '\033[35mPurple!\033[0m'
  1. Vérifiez la configuration de votre projet, cochez la case "Environnement de construction" et assurez-vous que "Sortie de la console ANSI couleur" est coché.

  2. Si vous ne trouvez pas la section "Environnement de construction", allez à Gérer les plugins pour vérifier que le bon plugin est réellement installé.
    (J'ai récemment installé le plugin "Ansible" au lieu de "AnsiColor" ....)

8
nathan

La sortie de la console Jenkins est un endroit où vous pouvez passer assez de temps à essayer de comprendre ce qui ne va pas (ou peut-être bien?).

Les plugins AnsiColor vous permettent de colorer la sortie de la console Jenkins monochromatique.

Guide d'installation

  1. Installez le plug-in AnsiColor dans la section Environnement de construction, cochez Color ANSI Console OutputJenkins -
  2. Couleur ANSI Console Output - devrait ressembler à

  3. TesterFenster Inside Execute Shell ajoute quelque chose comme:

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
vous devriez voir comme votre sortie

3
chintan prajapati

Cela ne fonctionne que depuis la console Jenkins, et non depuis les scripts qui sont envoyés à votre console

2
Cyberience

L'OP a explicitement demandé comment utiliser le plug-in AnsiColor Jenkins sous Windows. Voici donc ma réponse:

cmd.exe n'est pas un émulateur de terminal

Comme @ocodo l'a écrit, cmd.exe (qui est déclenché par Jenkins) n'est pas un émulateur de terminal. Par conséquent, il ne prend pas en charge la sortie ANSI des commandes batch. C’est donc tout simplement non pris en charge sous Windows. 

Ces tests ont échoué dans Jenkins lors de l’étape de construction de Windows Batch:

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

Dernière ligne: pour injecter un caractère ESC dans un formulaire de test Firefox, appuyez sur alt + 27, qui est également la séquence d'échappement de la plupart des éditeurs. plus d'infos ici: http://www.robvanderwoude.com/ansi.php#AnsiColor et https://groups.google.com/forum/#!topic/jenkinsci-users/0OcjlZQffkrk

Une solution: utiliser une impression Python pour la coloration du texte

Les tâches de construction qui utilisent Python pour la sortie de console n'ont rencontré aucun problème avec AnsiColor. Par conséquent, si Python est disponible dans votre environnement où la sortie de la console est générée par un script, vous pouvez y injecter des codes ANSI. Voici comment j'ai travaillé pour le rendre coloré.

  • Créez un script d'assistance dans util/ansiGreen.py comme ceci:
#!/usr/bin/env python
print("\033[32m");
  • Inscrivez-vous en tant que variable au niveau de votre configuration de construction globale:
set ansiGreen=python %cdRootPath%util\ansiGreen.py
  • Ajoutez-le à vos scripts:
call make-some-tests.bat
if %errorlevel% gtr 0 (
    %ansiRed%
    echo [ERROR] You screwed up trunk!
    %ansiOff%
)

Comme vous pouvez le constater, %ansiOff% est également requis pour se terminer par la coloration (c'est simplement "\033[0m" imprimé en python). Sinon, tout ce qui suit %ansiRed% sera dans rouge.

Ce script est exécuté sur un esclave Jenkins. Un autre défi consiste à définir et à obtenir un environnement directement dans l’étape de construction par lots de Jenkins.

C'est un peu moche, mais après de nombreuses recherches, il semble être la meilleure solution pour permettre à AnsiColor d'être renvoyé à un maître Windows Jenkins à partir d'un esclave Windows Jenkins.

0
domih