it-swarm.com.de

Wie verwende ich das ANSIcolor Plugin in Jenkins?

Ich habe das ANSI-Color-Plugin für Jenkins installiert. In den Jobs habe ich dieses Plugin mit dem Standardprofil 'xterm' aktiviert.

Ich kann nicht herausfinden, wie die Ausgabe des Konsolenprotokolls eingefärbt wird, wenn aus den Batchdateien (Windows-Plattform) in das Protokoll __.

Die Dokumentation auf 

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

ist nicht hilfreich Es gibt keine Beispiele, wie Sie tatsächlich in Farbe drucken können. 

Ich habe verschiedene Echo/Print-Befehle ausprobiert, aber ich bekomme keine Farben zum Arbeiten.

Jeder Hinweis wird geschätzt.

34

Das ANSI-Farb-Plug-In wandelt Ihre Konsolenausgabe in HTML um. Wenn Ihre Ausgabe ANSI-Escape-Sequenzen enthält, werden diese speziellen Zeichenfolgen in (farbigen) HTML-Code konvertiert. Sie können die Zuordnung nur über 'ANSI-Farbzuordnung' konfigurieren.

Beispiel:
\ x1b [31m transformiert die HTML-Farbe Rot 

Es scheint, dass Ihr Programm keine Escape-Sequenzen verwendet. Wenn Sie jedoch Ihre eigene Software oder Ihr eigenes Skript geschrieben haben, können Sie diese Escape-Sequenzen verwenden.

1. Beispiel BASH:

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

2. Beispiel BASH:

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

Wenn Sie es brauchen, müssen Sie printf eine neue Zeilenfolge hinzufügen:

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

Mehr zu Escape-Sequenzen:
Englisch: http://en.wikipedia.org/wiki/ANSI_escape_code
Deutsch: http://de.wikipedia.org/wiki/Escape-Sequenz

9
Mirko Ebert

Zum Jenkins-ANSIcolor-Plugin gibt es hier viel mehr Dokumentation: https://github.com/dblock/jenkins-ansicolor-plugin

Ich habe keine Farben gesehen, da ich Farben mit hoher Intensität (im Bereich der 90er Jahre) verwendet habe und diese nicht unterstützt werden. Muss in den 30er Jahren an Farben bleiben

8
hamx0r
  1. Vergewissern Sie sich, dass die Software wirklich ANSI-Farben ausgibt. Ein Bash-Skript, das dieses Echo ausführt, erzeugt beispielsweise Farbe, wenn das AnsiColor-Plugin installiert ist, es werden jedoch in der Konsolenausgabe fehlerhafte Escape-Sequenzen ohne Plugin erzeugt.

In BASH:

echo -e '\033[35mPurple!\033[0m'
  1. Überprüfen Sie Ihre Projektkonfiguration, überprüfen Sie die "Build Environment" und stellen Sie sicher, dass "Color ANSI Console Output" aktiviert ist.

  2. Wenn Sie den Abschnitt "Build Environment" nicht finden können, überprüfen Sie unter Plugins verwalten, ob das richtige Plugin wirklich installiert ist.
    (Ich habe kürzlich das "Ansible" -Plugin anstelle von "AnsiColor" installiert ....)

8
nathan

Die Ausgabe der Jenkins-Konsole ist ein Ort, an dem Sie eine anständige Zeit verbringen können, um herauszufinden, was schief gelaufen ist (oder vielleicht richtig?).

Mit den AnsiColor-Plugins können Sie die monochromatische Jenkins-Konsolenausgabe farbig gestalten.

Schrittweise Anleitung

  1. Installieren Sie das AnsiColor-Plugin. Überprüfen Sie im Abschnitt Build Environment die Option Color ANSI Console OutputJenkins -
  2. Color ANSI Console Output - sollte aussehen

  3. TesterFenster Inside Execute Shell-Schritt fügen Sie Folgendes hinzu:

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
Sie sollten wie Ihre Ausgabe sehen

3

Dies funktioniert nur von der Jenkins-Konsole aus und nicht von den eigentlichen Skripten, die an Ihre Konsole ausgegeben werden

2
Cyberience

Das OP hat explizit nach der Verwendung des AnsiColor Jenkins Plugin unter Windows gefragt, daher hier meine Antwort:

cmd.exe ist kein Terminalemulator

Wie @ocodo schrieb, ist cmd.exe (der von Jenkins ausgelöst wird) kein Terminalemulator, daher wird die ANSI-Ausgabe von Batchbefehlen standardmäßig nicht unterstützt. Das wird unter Windows also nicht unterstützt. 

Diese Tests waren in Jenkins mit dem Windows-Stapel-Erstellungsschritt nicht erfolgreich:

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

Letzte Zeile: Um ein ESC-Zeichen in ein Firefox-Testbox-Formular einzufügen, drücken Sie Alt + 27, die in den meisten Editoren auch die Escape-Sequenz ist. Weitere Informationen hier: http://www.robvanderwoude.com/ansi.php#AnsiColor und https://groups.google.com/forum/#!topic/jenkinsci-users/0OcjlZQfqrk

A-Lösung: Verwenden Sie Python-Druck für Textfarbe

Die Build-Jobs, die Python für die Konsolenausgabe verwenden, hatten kein Problem mit AnsiColor. Wenn Python in Ihrer Umgebung verfügbar ist, in der die Konsolenausgabe von einem Skript generiert wird, können Sie ANSI-Codes von dort einfügen. So habe ich es gemacht, um es bunt zu machen.

  • Erstellen Sie ein Hilfsskript in util/ansiGreen.py wie folgt:
#!/usr/bin/env python
print("\033[32m");
  • Registrieren Sie sich als env var auf der Ebene Ihrer globalen Build-Konfiguration:
set ansiGreen=python %cdRootPath%util\ansiGreen.py
  • Fügen Sie es Ihren Skripten hinzu:
call make-some-tests.bat
if %errorlevel% gtr 0 (
    %ansiRed%
    echo [ERROR] You screwed up trunk!
    %ansiOff%
)

Wie Sie sehen können, ist auch %ansiOff% erforderlich, um mit der Einfärbung zu enden (es wird einfach "\033[0m" durch Python gedruckt). Sonst wird alles nach %ansiRed% in rot sein.

Dieses Skript wird auf einem Jenkins-Slave ausgeführt. Eine Umgebung direkt im Jenkins Batch Build-Schritt festzulegen und zu erhalten, ist eine weitere Herausforderung.

Es ist ein wenig hässlich, aber nach langer Recherche scheint es die beste Lösung zu sein, um AnsiColor von einem Windows Jenkins-Slave an einen Windows Jenkins-Master zurückgeben zu können.

0
domih