Domanda Come usare il plugin ANSIcolor in Jenkins?


Ho installato il plugin ANSI-color per Jenkins. Nei lavori 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 accedere 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.


32
2017-09-14 16:35


origine


risposte:


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 rosso html

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
Tedesco: http://de.wikipedia.org/wiki/Escape-Sequenz


10
2018-04-10 16:52



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


7
2018-01-21 16:08



  1. Controlla che il software stia davvero trasmettendo i colori ANSI. Ad esempio, uno script bash che esegue questo 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" ....)


7
2017-12-16 02:23



L'output della console di 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 Crea ambiente, seleziona Colore Uscita console ANSIJenkins -
  2. Uscita console ANSI a colori -dovrebbe assomigliare

  3. TesterFenster Inside Execute shell step aggiungere 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 la tua produzione


2
2018-04-28 16:50



Funziona solo dalla console di Jenkins e non dagli script effettivi che vengono inviati alla console


2
2018-03-21 09:39



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 di testbox 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 utilizzano Python per l'output della console non hanno avuto alcun problema con AnsiColor, quindi se Python è disponibile nel proprio ambiente in cui l'output della console è generato da uno script, è possibile inserire i codici ANSI da lì. Ecco come ho lavorato intorno per renderlo colorato.

  • Crea uno script di supporto in util/ansiGreen.py così:
#!/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 potete vedere, %ansiOff% è anche richiesto, per finire con la colorazione (è semplicemente "\033[0m" stampato attraverso python). Altro 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
2017-08-24 08:40