jenkins BlueOcean修复Pipeline不支持中文的问题
问题
在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的黑魔法解决方案来自这里。
本解决方案原创,转载需要注明