Jenkins控制台输出grunt命令的奇怪字符[31m[[39m...

17

我正在使用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.

我已经检查了文件编码设置,发现它被设置为MacRoman,在设置export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8之后,现在是UTF-8。

6个回答

28
那些看起来像是颜色转义序列。尝试向命令传递参数,比如--no-color(如果该工具支持的话,可以查看this),或者查看AnsiColor插件

谢谢,将 --no-color 选项添加到 Grunt 中解决了这个问题。 - James Da Costa

7

如果你喜欢颜色,你可以使用Jenkins AnsiColor插件来正确显示构建日志中的颜色转义序列。


1
我成功的做法是...
play -Dsbt.log.noformat=true clean compile test dist

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

1
如果您可以在Jenkins中安装插件,那么有一个更好的选择。只需安装AnsiColor插件,并将以下内容添加到您的Jenkinsfile中:
options {    
  ansiColor('xterm')
}

现在,你不仅消除了烦人的字符,还在输出中添加了颜色!

0

我对这个问题有不同的解决方案。实际上,上面列出的建议都没有对我起作用。我使用了两种类型的从机:CentOS和Ubuntu机器。由于某种原因,这个问题只影响了CentOS机器,而不是Ubuntu机器。

我比较了两种类型从机的“系统信息”,发现在CentOS主机上设置了ANSI_X3.4-1968文件编码,这是默认设置。Ubuntu的默认设置是UTF-8

因此,使用高级JVM选项-Dfile.encoding=UTF-8重新启动从机就可以解决问题,无需抑制mocha的颜色。


0

看起来你的 shell 忽略了着色控制命令。要解决这个问题,可能需要更改脚本,使其不产生该输出。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接