問題
在Jenkins的BlueOcean中,修改Pipeline,結果發現,如果編寫過程中,凡是能導致jenkinsFile有中文信息的,點擊 save and run之后 Console 中出現錯誤,無法保存。
分析
根據錯誤信息,定位到問題來源jenkins-js-extension.js,該問題和 js的btoa和atob 不支持unicode有關。
解決
- 將jenkins的
./webapps/plugins/blueocean-pipeline-editor/WEB-INF/lib/blueocean-pipeline-editor.jar
下載到本地, - 解壓出jenkins-js-extension.js,搜索btoa,有兩處一樣的代碼,搜索atob也是一樣的,成對出現。
- 修改代碼,將兩處encode和decode修改為以下結果:
- 將修改之后的jenkins-js-extension.js拖入blueocean-pipeline-editor.jar。
- 將修改之后的blueocean-pipeline-editor.jar上傳到Jenkins的原處:
./webapps/plugins/blueocean-pipeline-editor/WEB-INF/lib/blueocean-pipeline-editor.jar
var Base64 = {
encode: function encode(data) {
return btoa(unescape(encodeURIComponent(data)));
},
decode: function decode(str) {
return decodeURIComponent(escape(atob(str)));
}
};
該JS的黑魔法解決方案來自這里。
本解決方案原創,轉載需要注明