Как использовать плагин ANSIcolor в Jenkins?
Я установил плагин ANSI-color для Jenkins.
В заданиях я активировал этот плагин с профилем по умолчанию xterm.
Я не могу понять, как раскрасить вывод журнала консоли при печати на
журнал из пакетных файлов (Windows-платформа).
Документация по
https://wiki.jenkins-ci.org/display/JENKINS/AnsiColor+Plugin
не помогает. Нет примеров того, как на самом деле печатать в цвете.
Я пробовал несколько разных команд эхо/печати, но я не могу заставить цвета работать.
Любой намек оценивается.
Ответы
Ответ 1
Разъем ANSI-color преобразует вывод консоли в HTML. Если ваш вывод содержит escape-последовательности ansi, он преобразует эти специальные последовательности char в (цветной) HTML. Вы можете настроить отображение только с помощью карты цветов ANSI.
Пример:
\ x1b [31m преобразует html цветной красный
Похоже, ваша программа не использует последовательности Escape. Но если вы написали свое собственное программное обеспечение или script, вы можете использовать эти последовательности Escape.
Пример BASH:
echo -e "\033[31mRed\033[0m"
Больше для последовательностей Escape:
Английский: http://en.wikipedia.org/wiki/ANSI_escape_code
Deutsch: http://de.wikipedia.org/wiki/Escape-Sequenz
Ответ 2
- Дважды проверьте, действительно ли программное обеспечение выводит цвета ANSI. Например, bash script, выполняющий это эхо, будет генерировать цвет с установленным плагином AnsiColor, но он будет создавать беспорядочные escape-последовательности на выходе консоли без плагина.
В BASH:
echo -e '\033[35mPurple!\033[0m'
-
Проверьте конфигурацию проекта, проверьте "Среда сборки" и убедитесь, что отмечен "Консольный выход цвета ANSI".
-
Если вы не можете найти раздел "Среда сборки", перейдите в "Управление плагинами", чтобы проверить, правильно ли установлен плагин.
(Недавно я установил плагин" Ansible "вместо" AnsiColor"....)
Ответ 3
В плагине Jenkins-ANSIcolor имеется гораздо больше документации:
https://github.com/dblock/jenkins-ansicolor-plugin
Я не видел цветов, потому что я использовал цвета с высокой интенсивностью (в диапазоне 90), и они не поддерживаются. Gotta придерживаться цветов в 30-е годы
Ответ 4
Выход консоли Jenkins - это место, где вы можете потратить приличное время, пытаясь понять, что пошло не так (или, может быть, так?).
Плагины AnsiColor дают возможность цветной монохромной выходной консоли Jenkins.
Пошаговое руководство
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
Ответ 5
OP явно спросил об использовании AnsiColor Jenkins Plugin в Windows, так что вот мой ответ:
cmd.exe не является эмулятором терминала
Как писал @ocodo, cmd.exe
(который запускается Jenkins) не является эмулятором терминала, поэтому по умолчанию он не будет поддерживать вывод ANSI из командных команд.
Так что это просто не поддерживается в Windows.
Эти тесты были неудачными в Дженкинсе с использованием этапа сборки пакета 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#AnsiColor и https://groups.google.com/forum/#!topic/jenkinsci-users/0OcjlZQfqrk
Решение: используйте печать Python для раскраски текста
Задачи построения, в которых используется Python для вывода консоли, не имеют проблем с AnsiColor, поэтому, если Python доступен в вашей среде, где вывод консоли создается script, вы можете вводить коды ANSI оттуда. Здесь, как я работал вокруг, чтобы сделать его красочным.
- Создайте вспомогательный script в
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"
, напечатанный через python). Остальное после %ansiRed%
будет красным.
Этот script запускается на подчиненном устройстве Jenkins. Чтобы установить и получить среду непосредственно внутри этапа сборки партии Jenkins, это еще одна проблема.
Это немного уродливо, но после многих исследований это, по-видимому, лучшее решение, позволяющее AnsiColor быть возвращенным мастеру Windows Jenkins из ведомого Windows Jenkins.