Jenkins控制台打印编码字符

4

当在 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


请尝试访问 https://www.linkedin.com/pulse/how-resolve-utf-8-encoding-issue-jenkins-ajuram-salim/ 以解决Jenkins中的UTF-8编码问题。 - Talha Junaid
3个回答

9
您可以使用Jenkins II将编码更改为UTF-8。 前往 Jenkins -> 管理Jenkins -> 配置系统 -> 全局属性 并添加两个环境变量JAVA_TOOL_OPTIONSLANG,分别具有值-Dfile.encoding=UTF-8en_US.UTF-8enter image description here 在添加这些之后,您可能需要重新启动Jenkins。
参考资料:https://www.linkedin.com/pulse/how-resolve-utf-8-encoding-issue-jenkins-ajuram-salim/ 更新: 或者,您可以在jenkins.xml文件中更新<arguments>。 例如:
<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -Dfile.encoding=UTF-8 -jar "%BASE%\jenkins.war" --httpPort=8080 --webroot="%BASE%\war"</arguments>

很不幸,我尝试了这个方法,但它没有起作用。我通过删除本地的Jenkins并运行java -Dfile.encoding=UTF-8 -jar jenkins.war来解决了我的问题,但这个选项对于我们的生产Jenkins来说并不可行。你知道有没有一个Jenkins启动文件夹可以运行Java命令? - Michael
1
哦,你完全帮我找到了可行的答案。我在Jenkins配置文件(jenkins.xml)中添加了“-Dfile.encoding=UTF-8”。谢谢! - Michael

6

1
只有这个对我的情况有帮助。 - chandu
这也是我找到的唯一可行的解决方案。需要澄清的是,必须在主服务器上的Jenkins.xml文件以及代理服务器上的jenkins-slave.xml文件和参数部分进行更改。 - Jand

1

对我来说,问题实际上在于指定了“sh”管道步骤的可选“encoding”参数:sh: Shell脚本

当然,只有在文件编码设置正确的情况下,才能正常工作,如其他帖子中所述。


我尝试了所有可能的环境变量、标志和代理配置。这是唯一一个让我成功的解决方案。代理正在运行在MacOS上。谢谢! - undefined

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