Jenkins中归档中文文件失败的异常处理探秘

431 阅读2分钟

上一篇文章我们解决了Jenkins工程在build阶段处理中文的问题,但是好景不长,今天在归档文件的时候又出现了这个中文问题。经过我的细心探究,终于也解决了这个问题。

在这里向大家分享解决的方案。

问题现象

 

配置详情如下:

image.png

较前文我又增加了归档文件的步骤。执行后控制台的打印如下:

image.png 看上去还是字符的问题,前面的是java.nio.charset.UnmappableCharacterException,这里是java.nio.file.InvalidPathException。

解决思路

通过对比正常机器和容器节点的系统信息,我发现还有sun.jnu.encoding属性还是ANSI_X3.4-1968,这个部分现在只有这个不一样。

  image.png 依照上个参数的配置方式,写入节点的JVM选项里。这个参数sun.jnu.encoding管理的是文件路径的编码,而上一篇文章中的是文件内容的编码。

image.png

断开后重新连接节点。

image.png

此时再去运行这个工程,发现还是不行的。观察节点的系统环境,还是没有变化,说明这并不是这样配置的。

没有成功的探索

网上找到文章,也提到了设置这个没生效的问题,还是建议在脚本阶段export LANG出来,但对我并没有作用,放出来仅作为参考。(blog.csdn.net/jie87344099…

 

还有让设置全局java属性的。设置JAVA_OPTS=’-Dfile.encoding="UTF-8" -Dsun.jnu.encoding="UTF-8"’,也没有用。

经过细致的观察发现,这个问题来源于JAVA版本,11版本的JAVA有时候不能正确的设置sun.jnu.encoding的值,容器中应该是这种情况,重新尝试了JAVA8版本的容器就没有这种问题。

 

这里我们重新基于Ubuntu 20.04制作一个容器,安装java8

sudo apt-get install openjdk-8-jdk

配置好ssh连接相关的东西。

重新建立节点连接观察。

虽然最后实际是通过换了java版本来解决这个问题的,但还是可以为大家提供参考,希望对大家能有所帮助