1. 程式人生 > >持續整合之jenkins實踐教程:基礎篇(7): 控制檯輸出的中文亂碼

持續整合之jenkins實踐教程:基礎篇(7): 控制檯輸出的中文亂碼

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資訊還是不會改變