Jenkins 控制台输出包含来自 grunt 命令的这些奇怪字符 [31m[[39m...

问题描述 投票:0回答:6

我正在使用 jenkins 运行 grunt-contrib-jshint 命令,控制台输出包含如下文本:

[31m[[39m[33mL425[39m[31m:[39m[33mC29[39m[31m][39m [33mExpected a conditional expression and instead saw an assignment.[39m

有什么想法吗?以及如何修复它。

运行同样的脚本直接显示:

[L425:C29] Expected a conditional expression and instead saw an assignment.

我检查了 file.encoding 设置,设置为 MacRoman,设置后

export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8
现在是 UTF-8。

encoding console jenkins output gruntjs
6个回答
28
投票

那些看起来像颜色转义序列。看看是否可以将

--no-color
这样的参数传递给命令(如果工具支持,请参阅 this 也许),或者查看 AnsiColor 插件


7
投票

或者,如果您喜欢颜色,可以使用 Jenkins AnsiColor Plugin 在构建日志中正确显示颜色转义序列。


1
投票

对我有用的是......

play -Dsbt.log.noformat=true clean compile test dist

-Dsbt.log.noformat=true 抑制了 Play 2.1.1 版本上控制台输出的着色,使 Jenkins 上的控制台日志可读。现在,如何以较少 XML 的方式获取测试结果?


0
投票

它看起来像是被 shell 忽略的着色控制命令。在修复它方面,可能需要更改脚本以使其不会产生该输出。


0
投票

对于整个问题我有不同的解决方案。事实上,上面列出的建议对我来说都不起作用。我使用两种类型的从机:CentOS 和 Ubuntu 机器。由于某种原因,该问题仅影响 CentOS 计算机,而不影响 Ubuntu 计算机。

我比较了两种类型从站的“系统信息”,发现 file.encoding 在 CentOS 主机上设置了

ANSI_X3.4-1968
。这是默认设置。 Ubuntu 默认为
UTF-8

因此,使用高级 JVM 选项

-Dfile.encoding=UTF-8
重新启动从属服务器就可以解决问题,而无需抑制摩卡的颜色。


0
投票

如果你可以在 Jenkins 中安装插件,还有一个更好的选择。只需安装 AnsiColor 插件并将其添加到您的 Jenkinsfile 中即可:

options {    
  ansiColor('xterm')
}

现在,您不仅消除了烦人的字符,而且输出中还包含了颜色!

© www.soinside.com 2019 - 2024. All rights reserved.