Как использовать плагин ANSIcolor в Jenkins?

Я установил плагин ANSI-цвета для Jenkins. В Jobs я активировал этот плагин с профилем по умолчанию "xterm".

Я не могу понять, как раскрасить вывод Консольного журнала при печати в журнал из пакетных файлов (платформа Windows).

Документация по

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

не полезно Там нет примеров, как на самом деле печатать в цвете.

Я пробовал несколько разных команд echo / print, но я не могу заставить цвета работать.

Любая подсказка приветствуется.

6 ответов

Цветовой плагин ANSI преобразует вывод вашей консоли в HTML. Если ваш вывод содержит escape-последовательности ANSI, он преобразует эти специальные последовательности символов в (цветной) HTML. Вы можете настроить отображение только через 'ANSI color map'.

Пример:
\ x1b [31м трансформирует HTML красный цвет

Похоже, что ваша программа не использует Escape-последовательности. Но если вы написали свое собственное программное обеспечение или скрипт, вы можете использовать эти последовательности Escape.

1-й пример BASH:

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

2-й пример BASH:

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

Если вам это нужно, вы должны добавить последовательность новой строки в printf:

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

Еще побег последовательности:
Английский: http://en.wikipedia.org/wiki/ANSI_escape_code
Deutsch: http://de.wikipedia.org/wiki/Escape-Sequenz

Здесь доступно гораздо больше документации по плагину Jenkins-ANSIcolor: https://github.com/dblock/jenkins-ansicolor-plugin

Я не видел цветов, потому что я использовал цвета "высокой интенсивности" (в диапазоне 90-х), и они не поддерживаются. Должен придерживаться цвета в 30-х годах

  1. Дважды проверьте, что программное обеспечение действительно выводит цвета ANSI. Например, bash-скрипт, выполняющий это эхо, будет производить цвет с установленным плагином AnsiColor, но он будет создавать испорченные escape-последовательности в выводе консоли без плагина.

В BASH:

echo -e '\033[35mPurple!\033[0m'
  1. Проверьте конфигурацию вашего проекта, проверьте "Среду сборки" и убедитесь, что "Color ANSI Console Output" отмечен.

  2. Если вы не можете найти раздел "Build Environment", перейдите в раздел "Управление плагинами", чтобы еще раз проверить, действительно ли установлен нужный плагин.
    (Я недавно установил плагин "Ansible" вместо "AnsiColor"....)

Вывод на консоль Jenkins - это место, где вы можете потратить приличное количество времени, пытаясь выяснить, что пошло не так (или, возможно, правильно?).

Плагины AnsiColor дают вам возможность раскрасить монохроматический вывод консоли Jenkins.

Пошаговое руководство

  1. Установите плагин AnsiColor. В разделе "Среда сборки" установите флажок "Цвет".
  2. Цветной вывод на консоль ANSI - должен выглядеть

  3. TesterFenster Inside Выполнить шаг оболочки и добавить что-то вроде:

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
вы должны увидеть как ваш вывод

Это работает только с консоли Jenkins, а не с реальных скриптов, которые выводятся на вашу консоль.

ОП явно спросил об использовании плагина AnsiColor Jenkins в Windows, так что вот мой ответ:

cmd.exe не является эмулятором терминала

Как писал @ocodo, cmd.exe (запускается Jenkins) не является эмулятором терминала, поэтому по умолчанию он не поддерживает вывод ANSI из пакетных команд. Так что это просто не поддерживается в Windows.

Эти тесты не увенчались успехом в Jenkins с использованием этапа пакетной сборки Windows:

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

Последняя строка: чтобы вставить символ ESC в форму тестового окна Firefox, нажмите alt+27, что также является escape-последовательностью в большинстве редакторов. дополнительная информация здесь: http://www.robvanderwoude.com/ansi.php и https://groups.google.com/forum/

Решение: использовать печать Python для раскраски текста

Задания сборки, использующие Python для вывода на консоль, не имели проблем с AnsiColor, поэтому, если Python доступен в вашей среде, где вывод на консоль генерируется скриптом, вы можете вводить оттуда коды ANSI. Вот как я работал над этим, чтобы сделать его ярким.

  • Создать вспомогательный скрипт в util/ansiGreen.py вот так:
#!/usr/bin/env python
print("\033[32m");
  • Зарегистрируйтесь как env var на уровне вашей глобальной конфигурации сборки:
set ansiGreen=python %cdRootPath%util\ansiGreen.py
  • Добавьте его в свои скрипты:
call make-some-tests.bat
if %errorlevel% gtr 0 (
    %ansiRed%
    echo [ERROR] You screwed up trunk!
    %ansiOff%
)

Как вы видете, %ansiOff% также требуется, чтобы закончить с окраской (его просто "\033[0m" печатается через питон). Остальное все после %ansiRed% будет в красном.

Этот сценарий выполняется на рабе Дженкинса. Настроить и получить среду непосредственно в шаге пакетной сборки Jenkins - еще одна задача.

Это немного уродливо, но после долгих исследований кажется лучшим выходом из ситуации, позволяющей вернуть AnsiColor мастеру Windows Jenkins от подчиненного устройства Windows Jenkins.

Другие вопросы по тегам