我已经为 Jenkins 安装了 ANSI-color 插件。在作业中,我使用默认配置文件“xterm”激活了该插件。
从批处理文件(Windows 平台)打印到日志时,我无法弄清楚如何为控制台日志的输出着色。
上的文档
https://wiki.jenkins-ci.org/display/JENKINS/AnsiColor+Plugin
没有帮助。没有示例如何实际进行彩色打印。
我尝试了几种不同的回显/打印命令,但我无法让颜色起作用。
任何提示表示赞赏。
我已经为 Jenkins 安装了 ANSI-color 插件。在作业中,我使用默认配置文件“xterm”激活了该插件。
从批处理文件(Windows 平台)打印到日志时,我无法弄清楚如何为控制台日志的输出着色。
上的文档
https://wiki.jenkins-ci.org/display/JENKINS/AnsiColor+Plugin
没有帮助。没有示例如何实际进行彩色打印。
我尝试了几种不同的回显/打印命令,但我无法让颜色起作用。
任何提示表示赞赏。
ANSI-color 插件将您的控制台输出转换为 HTML。如果您的输出包含 ansi 转义序列,那么它将这些特殊字符序列转换为(彩色)HTML。您只能通过“ANSI 颜色映射”配置映射。
示例:
\x1b[31m将 html 颜色转换为红色
看起来您的程序没有使用转义序列。但是,如果您编写了自己的软件或脚本,则可以使用这些 Escape 序列。
第一个示例 BASH:
echo -e "\033[31mRed\033[0m"
第二个例子 BASH:
printf "\033[31mRed\033[0m"
如果需要,必须在 printf 中添加换行符:
printf "\033[31mRed\033[0m\n"
更多转义序列:
英语: http
://en.wikipedia.org/wiki/ANSI_escape_code
德语: http://de.wikipedia.org/wiki/Escape-Sequenz
这里有更多关于 Jenkins-ANSIcolor 插件的文档: https ://github.com/dblock/jenkins-ansicolor-plugin
我没有看到颜色,因为我使用的是“高强度”颜色(在 90 年代范围内)并且这些不受支持。必须坚持 30 年代的颜色
在 BASH 中:
echo -e '\033[35mPurple!\033[0m'
检查您的项目配置,检查“构建环境”并确保选中“颜色 ANSI 控制台输出”。
如果找不到“构建环境”部分,请转到管理插件以仔细检查是否确实安装了正确的插件。
(我最近安装了“Ansible”插件而不是“AnsiColor”......)
Jenkins 控制台输出是您可以花费大量时间尝试找出问题所在(或者可能是正确的?)的地方。
AnsiColor 插件让您有机会为单色 Jenkins 控制台输出着色。
分步指南
颜色 ANSI 控制台输出 -应该看起来像
TesterFenster Inside Execute shell 步骤添加如下内容:
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 控制台,而不适用于输出到控制台输出的实际脚本
OP 明确询问在 Windows 上使用 AnsiColor Jenkins 插件,所以这是我的答案:
cmd.exe 不是终端模拟器
正如@ocodo 所写,cmd.exe
(由 Jenkins 触发)不是终端模拟器,因此默认情况下它不支持批处理命令的 ANSI 输出。所以这在 Windows 上是不支持的。
这些测试在 Jenkins 中使用 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
最后一行:要在 Firefox 测试框表单中注入 ESC 字符,请按 alt+27,这也是大多数编辑器中的转义序列。更多信息在这里:http ://www.robvanderwoude.com/ansi.php#AnsiColor和https://groups.google.com/forum/#!topic/jenkinsci-users/0OcjlZQfqrk
解决方案:使用 Python print 进行文本着色
使用 Python 进行控制台输出的构建作业对 AnsiColor 没有任何问题,因此如果 Python 在您的环境中可用,控制台输出由脚本生成,您可以从那里注入 ANSI 代码。以下是我如何解决它以使其丰富多彩。
util/ansiGreen.py
:#!/usr/bin/env python
print("\033[32m");
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%
将显示为红色。
此脚本在 Jenkins 从站上运行。直接在 Jenkins 批量构建步骤中设置和获取环境是另一个挑战。
这有点难看,但经过大量研究后,它似乎是使 AnsiColor 从 Windows Jenkins 从站返回到 Windows Jenkins 主站的最佳解决方法。