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 peux pas trouver comment coloriser la sortie du journal de la Console lors de l'impression se connecter à partir des fichiers batch (Windows-plate-forme).
la documentation sur
https://wiki.jenkins-ci.org/display/JENKINS/AnsiColor + Plugin
n'est pas utile. Il n'y a pas d'exemples, comment réellement imprimer dans la couleur.
j'ai essayé plusieurs commandes echo / print, mais je n'arrive pas à faire fonctionner les couleurs.
Tout soupçon apprécié.
6 réponses
le plug ANSI-color transforme la sortie de votre console en HTML. Si votre sortie contient des séquences d'échappement ansi, alors il convertit ces séquences de caractères spéciaux en HTML (coloré). Vous ne pouvez configurer la cartographie que via 'ANSI color map'.
Exemple:
\x1b[31m est transformes html de couleur 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 Escape séquence.
1er exemple BASH:
echo -e "3[31mRed3[0m"
2ème Exemple BASH:
printf "3[31mRed3[0m"
Si vous en avez besoin, vous devez ajouter un saut de ligne de la séquence de printf:
printf "3[31mRed3[0m\n"
Plus de séquences d'Échappement:
Anglais:http://en.wikipedia.org/wiki/ANSI_escape_code
Deutsch: http://de.wikipedia.org/wiki/Escape-Sequenz
il y a beaucoup plus de documentation disponible 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 "haute intensité" (dans la gamme des années 90) et celles-ci ne sont pas supportées. Dois en tenir à des couleurs dans les 30
- Vérifiez deux fois que le logiciel produit vraiment des couleurs ANSI. Par exemple, un script bash qui exécute cet écho va produire de la couleur avec le plugin AnsiColor installé, mais il va produire des séquences d'évasion ratées dans la sortie de la console sans plugin.
in BASH:
echo -e '3[35mPurple!3[0m'
Vérifiez la configuration de votre projet, vérifiez l '"environnement de construction" et assurez-vous que la "sortie de la Console ANSI en couleur" est vérifier.
si vous ne trouvez pas la section" construire L'environnement", 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"....)
la sortie de la console Jenkins est un endroit où vous pouvez passer un certain temps à essayer de comprendre ce qui a mal tourné (ou peut-être raison?).
les plugins AnsiColor vous donnent l'occasion de colorer la sortie monochromatique de la console Jenkins.
Guide par étape
- installer le plugin AnsiColor sous la section construire L'environnement vérifier la couleur ANSI Console OutputJenkins -
couleur ANSI sortie de la Console -devrait ressembler comme
TesterFenster à l'Intérieur d'Exécuter shell étape ajouter quelque chose comme:
set +x
info() {
echo "3[1;33m[Info] 3[0m "
}
error() {
echo "3[1;31m[Error] 3[0m "
}
success() {
echo "3[1;32m[Success] 3[0m "
}
info "This is information message"
error "Houston we have a problem"
success "Great!!!"
echo "Foreground colors"
echo "3[31m Red 3[0m"
echo "3[32m Green 3[0m"
echo "3[33m Yellow 3[0m"
echo "3[34m Blue 3[0m"
siz
echo "3[35m Magneta 3[0m"
echo "3[36m Cyan 3[0m"
echo "Background colors"
echo "3[41m Red 3[0m"
echo "3[42m Green 3[0m"
echo "3[43m Yellow 3[0m"
echo "3[44m Blue 3[0m"
echo "3[45m Magneta 3[0m"
echo "3[46m Cyan 3[0m"
echo "Different combinations"
echo "3[1;31m Red 3[0m"
echo "3[1;4;37;42m Green 3[0m"
echo "3[1;43m Yellow 3[0m"
set -x
vous devriez voir comme sortie
cela ne fonctionne qu'à partir de la console Jenkins, et non pas à partir des scripts qui sortent de votre console
L'OP demandé explicitement sur l'utilisation de AnsiColor Jenkins Plugin sur 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, donc il ne supporte pas la sortie ANSI des commandes de lot par défaut.
Donc C'est juste non supporté par Windows.
ces tests ont été infructueux dans Jenkins en utilisant Windows Batch build étape:
echo \e[33m hello \e[0m
echo 3[33m hello 3[0m
echo \x1b[33m hello \x1b[0m
echo [33m hello [0m
echo \[33m hello \[0m
echo ←[33m hello ←[0m
dernière ligne: pour injecter un caractère ESC dans une boîte de test Firefox, appuyez sur alt + 27, qui est également la séquence d'échappement dans la plupart des éditeurs. plus d'infos ici: http://www.robvanderwoude.com/ansi.php#AnsiColor et https://groups.google.com/forum/#!topic/jenkinsci-utilisateurs/0OcjlZQfqrk
une solution: utilisez Python print pour colorer le texte
les travaux de construction qui utilisent Python pour la sortie de la console n'ont pas problème avec AnsiColor, donc si Python est disponible dans votre environnement où la sortie de la console est générée par un script, vous pouvez injecter des codes ANSI à partir de là. Voici comment j'ai travaillé autour d'elle pour le rendre coloré.
- Créer un script d'aide à
util/ansiGreen.py
comme ceci:
#!/usr/bin/env python
print("3[32m");
- enregistrez env var au niveau de votre configuration globale de construction:
set ansiGreen=python %cdRootPath%util\ansiGreen.py
- ajoutez - le à votre scripts:
call make-some-tests.bat
if %errorlevel% gtr 0 (
%ansiRed%
echo [ERROR] You screwed up trunk!
%ansiOff%
)
Comme vous pouvez le voir, %ansiOff%
est également nécessaire, à la fin, avec de la couleur (il s'agit tout simplement "3[0m"
imprimé en python). D'autre après tout %ansiRed%
sera rouge.
ce script est exécuté sur un esclave Jenkins. Pour définir et obtenir un environnement directement dans Jenkins lot étape de génération est un autre défi.
C'est un peu moche, mais après beaucoup de recherches, il semble être la meilleure solution pour permettre AnsiColor être renvoyé à un maître de Windows Jenkins d'un esclave de Windows Jenkins.