升級Jenkins至2.426.3後,專案名稱帶有中文的無法在節點機上執行

SoulTraitor發表於2024-03-02

之前在AlmaLinux上安裝了2.356版本的Jenkins(Jenkins從Ubuntu遷移至AlmaLinux問題及相關解決記錄),但最近由於爆出安全漏洞(https://www.jenkins.io/security/advisory/2024-01-24/),因此將Jenkins升級至最新的2.426.3版本,完成後發現之前已經解決的節點機不支援中文專案名稱的問題又出現了。

2.356版本是最後一個支援jdk 8的版本,後續版本都需要至少jdk 11才能啟動節點機,之前,我在節點機的JVM選項中設定了-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8,其中sun.jnu.encoding能解決中文專案名稱報錯的問題,但使用jdk 11後,發現節點機啟動後,sun.jnu.encoding屬性依舊是ANSI_X3.4-1968,JVM選項不生效。

在查詢相關文件(https://github.com/AdoptOpenJDK/openjdk-docker/issues/105)後,發現問題原因是,在JDK 8之後的某個版本中,官方移除了對sun.jnu.encoding命令列引數的支援,完全以OS設定為準,因此-Dsun.jnu.encoding=UTF8不再生效,而解決方案是在啟動前設定環境變數(節點機啟動不會讀取使用者自己設定的環境變數,只有預設值),將編碼指定為UTF-8。注意到節點機配置中有一條Prefix Start Agent Command,將其設定為export LC_ALL=en_US.UTF-8 && ,這條命令會拼接在啟動remoting.jar之前執行,使sun.jnu.encoding被正確設定為UTF-8。

相關文章