Jenkins 控制台打印编码字符

Mic*_*ael 2 utf-8 character-encoding jenkins docker jenkins-pipeline

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

??? file1                         +-- file1
??? file2                         +-- file2
??? file3                         +-- file3

^Formatting I want                ^Formatting I get
Run Code Online (Sandbox Code Playgroud)

.

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

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

-e LC_ALL="en_US.UTF-8"
Run Code Online (Sandbox Code Playgroud)

.

结合:

sh returnStdout: true, script: " "
Run Code Online (Sandbox Code Playgroud)

并且用“œâ”€â”代替了“+--”,这似乎是“???”的ANSI编码。

我正在使用 ansiColor Option 但这似乎没有太大帮助。

.

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

詹金斯:控制台输出字符

Tal*_*aid 6

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

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

. 在此处输入图片说明

添加这些后,您可能需要重新启动 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>
Run Code Online (Sandbox Code Playgroud)


小智 6

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

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

将这些添加到 master 和代理中的 JVM 参数中 -

-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8
Run Code Online (Sandbox Code Playgroud)