1. 问题描述
部门内部对于Jenkins的使用采取的是Master + Slave Work Node的方式,即作为Master节点的Jenkins只负责任务调度,具体的操作由对应的Slave Work Node去执行。
最近团队成员反馈一个问题:一个Linux系统的Slave Work Node的编译日志输出中,中文部分均为乱码(如下图),这造成问题排查效率不高。

针对以上问题,我们尝试了:
- 在Jenkins的Pipeline脚本中设置
LC_ALL = 'en_US.UTF-8'。 - 确认作为Master节点的Jenkins服务端的启动参数中存在
-Dfile.encoding=UTF-8。 - 确认目标机器Slave Work Node的系统环境变量
echo $LANG/locale。 - 确认作为Master节点的Jenkins服务端的系统环境变量
echo $LANG/locale。 - 在Jenkins的Script Console中设置
System.setProperty('hudson.console.ConsoleCharset', 'UTF-8')。
无一例外,全部失败了。
2. 解决方案
这里先说解决方案。毕竟能够找到这里的,肯定是上面提到的常规方式都尝试失败了。
其实事后回顾,此时此刻就只剩下最后一种可能:作为agent的java程序remoting.jar自身的编码不对劲。
-
确定问题。

-
调整。

-
验证配置生效。
重启agent之后,应该如下图:
修改前后,Slave Work Node上agent命令参数行对比:

3. 最终效果

4. 总结
细节是魔鬼。
神在细节之中。
文章讲述了团队在使用JenkinsMaster+Slave模式时遇到中文乱码问题,尝试了常规解决方案后发现是remoting.jar编码问题。最终通过调整编码并重启agent,解决了问题,强调了细节处理的重要性。
3334

被折叠的 条评论
为什么被折叠?



