jenkins BlueOcean修复Pipeline不支持中文的问题

问题

在Jenkins的BlueOcean中,修改Pipeline,结果发现,如果编写过程中,凡是能导致jenkinsFile有中文信息的,点击 save and run之后 Console 中出现错误,无法保存。

分析

根据错误信息,定位到问题来源jenkins-js-extension.js,该问题和 js的btoa和atob 不支持unicode有关。

解决

  1. 将jenkins的./webapps/plugins/blueocean-pipeline-editor/WEB-INF/lib/blueocean-pipeline-editor.jar下载到本地,
  2. 解压出jenkins-js-extension.js,搜索btoa,有两处一样的代码,搜索atob也是一样的,成对出现。
  3. 修改代码,将两处encode和decode修改为以下结果:
  4. 将修改之后的jenkins-js-extension.js拖入blueocean-pipeline-editor.jar。
  5. 将修改之后的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)));
    }
};
Share