持续集成之jenkins实践教程:基础篇(7): 控制台输出的中文乱码

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

现象

使用jenkinsfile定义的流水线,如果stage名称为中文的时候,图形显示没有问题,但是在console的输出中会显示成??的乱码内容。
持续集成之jenkins实践教程:基础篇(7): 控制台输出的中文乱码_第1张图片
乱码内容的显示是因为流水线定义代码中包含中文信息比如:

    stage("分支内容拉取") {
      steps {
      ...

原因

可以通过系统信息来确认相关的设定,编码信息与file.encoding相关,确认之后发现编码方式不是utf8所导致(最终是否真正起效需要对此设定信息进行确认)
持续集成之jenkins实践教程:基础篇(7): 控制台输出的中文乱码_第2张图片

修改方法

无论哪种方法,最终都会落到启动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
/ #

设定确认

持续集成之jenkins实践教程:基础篇(7): 控制台输出的中文乱码_第3张图片

结果确认

再次执行job,console信息中的中文内容就可以正确显示了
持续集成之jenkins实践教程:基础篇(7): 控制台输出的中文乱码_第4张图片
但是之前的执行job的console信息还是不会改变

你可能感兴趣的:(#,持续构建)