Jenkins Console打印编码的字符

时间:2018-08-23 20:30:53

标签: docker jenkins utf-8 character-encoding jenkins-pipeline

从Linux容器内运行的声明性管道输出字符时,是否可以更改编码以匹配终端的真实输出?即

├── file1                         +-- file1
├── file2                         +-- file2
└── file3                         +-- file3

^Formatting I want                ^Formatting I get

我尝试将以下参数传递给我的Docker代理:

-e JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF-8" 

-e LC_ALL="en_US.UTF-8"

结合:

sh returnStdout: true, script: " "

得到“-”代替“ +-”,这似乎是“├──”的ANSI编码。

我正在使用ansiColor选项,但这似乎并没有太大帮助。

我看到了类似的问题,但是我不确定如何在管道中实现该解决方案。

Jenkins: console output characters

2 个答案:

答案 0 :(得分:1)

您可以使用Jenkins II将编码更改为UTF-8。 去 Jenkins -> 管理Jenkins -> 配置系统-> 全局属性

并添加两个分别具有值JAVA_TOOL_OPTIONSLANG的环境变量-Dfile.encoding=UTF-8en_US.UTF-8

enter image description here

添加这些内容后,您可能需要重新启动Jenkins。

参考https://www.linkedin.com/pulse/how-resolve-utf-8-encoding-issue-jenkins-ajuram-salim/

更新:

,或者您可以更新<arguments>文件中的jenkins.xml。 例如

<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -Dfile.encoding=UTF-8 -jar "%BASE%\jenkins.war" --httpPort=8080 --webroot="%BASE%\war"</arguments>

答案 1 :(得分:1)

这是cloudbees的官方回答。不幸的是,所有这些都不适合我。

https://support.cloudbees.com/hc/en-us/articles/360004397911-How-to-address-issues-with-unmappable-characters-

将它们添加到master和代理中的JVM Arguments中-

-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8