it-swarm.dev

Come usare il plugin ANSIcolor in Jenkins?

Ho installato il plugin ANSI-color per Jenkins . Nei Job ho attivato quel plugin con il profilo predefinito 'xterm'.

Non riesco a capire come colorare l'output del log della console quando si stampa su Log dai file batch (piattaforma Windows).

La documentazione su 

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

non è utile Non ci sono esempi su come stampare effettivamente a colori. 

Ho provato diversi comandi di eco/stampa, ma non riesco a far funzionare i colori.

Ogni suggerimento è apprezzato.

34
Stefan Schroeder

Il plug-in ANSI-colore trasforma l'output della tua console in HTML. Se il tuo output contiene sequenze di escape ansi, converte queste sequenze di caratteri speciali in HTML (colorato). È possibile configurare la mappatura solo tramite "ANSI color map".

Esempio:
\ x1b [31m trasforma il colore html in rosso 

Sembra che il tuo programma non usi sequenze di escape. Ma se hai scritto il tuo software o script, puoi usare queste sequenze di escape.

1 ° esempio BASH:

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

2 ° esempio BASH:

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

Se ti serve, devi aggiungere una sequenza di nuova riga a printf:

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

Altro per le sequenze di fuga:
Inglese: http://en.wikipedia.org/wiki/ANSI_escape_code
Deutsch: http://de.wikipedia.org/wiki/Escape-Sequenz

9
Mirko Ebert

C'è molto più documentazione disponibile sul plugin Jenkins-ANSIcolor qui: https://github.com/dblock/jenkins-ansicolor-plugin

Non vedevo i colori perché stavo usando colori "ad alta intensità" (negli anni '90) e questi non sono supportati. Devi attenermi ai colori degli anni '30

8
hamx0r
  1. Controlla che il software stia effettivamente trasmettendo i colori ANSI. Ad esempio, uno script bash che esegue questa eco produce colore con il plug-in AnsiColor installato, ma produrrà sequenze di escape incasinate nell'output della console senza plug-in.

In BASH:

echo -e '\033[35mPurple!\033[0m'
  1. Controlla la configurazione del tuo progetto, controlla "Build Environment" e assicurati che "Color ANSI Console Output" sia spuntato.

  2. Se non riesci a trovare la sezione "Build Environment", vai su Manage Plugins per ricontrollare che il plugin giusto sia realmente installato.
    (Recentemente ho installato il plugin "Ansible" invece di "AnsiColor" ....)

8
nathan

L'output della console Jenkins è un luogo in cui è possibile trascorrere una discreta quantità di tempo cercando di capire cosa è andato storto (o forse giusto?).

I plugin AnsiColor ti danno l'opportunità di colorare l'output monocromatico della console Jenkins.

Guida dettagliata

  1. Installa il plug-in AnsiColor Nella sezione Build Environment seleziona Color ANSI Console OutputJenkins -
  2. Output console colori ANSI - dovrebbe apparire come

  3. TesterFenster Inside Execute Shell aggiunge qualcosa come:

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
dovresti vedere come il tuo output

3

Funziona solo dalla console Jenkins e non dagli script effettivi che sono stati inviati alla console

2
Cyberience

L'OP ha chiesto esplicitamente di usare AnsiColor Jenkins Plugin su Windows, quindi ecco la mia risposta:

cmd.exe non è un emulatore di terminale

Come ha scritto @ocodo, cmd.exe (che viene attivato da Jenkins) non è un emulatore di terminale, quindi non supporterà l'output ANSI dai comandi batch per impostazione predefinita. Quindi questo non è supportato su Windows. 

Questi test non hanno avuto successo in Jenkins utilizzando il passo di build di 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

Ultima riga: per iniettare un carattere ESC in un modulo per provini di Firefox, premere alt + 27, che è anche la sequenza di escape nella maggior parte degli editor. maggiori informazioni qui: http://www.robvanderwoude.com/ansi.php#AnsiColor e https://groups.google.com/forum/#!topic/jenkinsci-users/0OcjlZQfqrk

Una soluzione: usa la stampa Python per colorare il testo

I lavori di compilazione che usano Python per l'output della console non hanno avuto alcun problema con AnsiColor, quindi se Python è disponibile nel tuo ambiente in cui l'output della console è generato da uno script, puoi inserire i codici ANSI da lì. Ecco come ho lavorato intorno per renderlo colorato.

  • Crea uno script di aiuto in util/ansiGreen.py in questo modo:
#!/usr/bin/env python
print("\033[32m");
  • Registrati come env var a livello della tua configurazione di build globale:
set ansiGreen=python %cdRootPath%util\ansiGreen.py
  • Aggiungilo ai tuoi script:
call make-some-tests.bat
if %errorlevel% gtr 0 (
    %ansiRed%
    echo [ERROR] You screwed up trunk!
    %ansiOff%
)

Come puoi vedere, %ansiOff% è anche richiesto, per terminare con la colorazione (è semplicemente "\033[0m" stampato tramite python). Altrimenti tutto dopo %ansiRed% sarà in rosso.

Questo script è eseguito su uno schiavo Jenkins. Impostare e ottenere un ambiente direttamente all'interno della fase di compilazione batch di Jenkins è un'altra sfida.

È un po 'brutto ma dopo molte ricerche sembra essere la soluzione migliore per consentire ad AnsiColor di essere restituito a un master Windows Jenkins da uno slave Windows Jenkins.

0
domih