jenkins是Java开发的应用程序,很多东西可以通过-D传入选项来进行设定,这篇文章以中文乱码的调整为例子,来说明一下常见修改的方式。

现象

使用jenkinsfile定义的流水线,如果stage名称为中文的时候,图形显示没有问题,但是在console的输出中会显示成??的乱码内容。

乱码内容的显示是因为流水线定义代码中包含中文信息比如:
stage("分支内容拉取") { steps { ...
原因

可以通过系统信息来确认相关的设定,编码信息与file.encoding相关,确认之后发现编码方式不是utf8所导致(最终是否真正起效需要对此设定信息进行确认)


修改方法

无论哪种方法,最终都会落到启动jenkins的参数传递上,比如通过JAVA_OPTS,设定内容如下

设定项 设定值
file.encoding UTF-8
sun.jnu.encoding UTF-8
直接修改启动脚本,在java后直接添加-D选项可能是最为直接的方式,也可以通过Jenkins中进行环境变量的设定,间接影响到设定。
/ # ps |grep java 9 root 0:50 java -jar -Duser.timezone=Asia/Shanghai -Dsun.jnu
.encoding=UTF-8 -Dfile.encoding=UTF-8 -Dhudson.model.DirectoryBrowserSupport.CSP
= /usr/share/jenkins/jenkins.war 177 root 0:00 grep java / #
设定确认



结果确认

再次执行job,console信息中的中文内容就可以正确显示了

但是之前的执行job的console信息还是不会改变