zoukankan      html  css  js  c++  java
  • 2种场景下的Docker配置的jerkins乱码处理

     

    【场景1】

    在此使用docker直接启动jenkins。

    jenkins的docker地址为:https://hub.docker.com/r/jenkins/jenkins, 而排在第一位的版本太老,很多插件都不支持。不建议使用。

    启动

    docker run -d --name jenkins -p 8080:8080 -p 50000:50000 jenkins/jenkins:2.210-centos

    然后通过访问:http://localhost:8080, 按其提示操作即可。

    控制台乱码问题

    在成功安装后,运行命令发现控制台打印的中文为乱码。

    试遍目前网上所有方案,都无效

    查看jenkins系统信息,其编码仍然为ANSI_X3.4-1968

    查看其Dockerfile

     

    见其启动命令为:/usr/local/bin/jenkins.sh,查看该脚本内容,见如下内容:

    # if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
    if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
    
      # read JAVA_OPTS and JENKINS_OPTS into arrays to avoid need for eval (and associated vulnerabilities)
      java_opts_array=()
      while IFS= read -r -d '' item; do
        java_opts_array+=( "$item" )
      done < <([[ $JAVA_OPTS ]] && xargs printf '%s' <<<"$JAVA_OPTS")
    
      readonly agent_port_property='jenkins.model.Jenkins.slaveAgentPort'
      if [ -n "${JENKINS_SLAVE_AGENT_PORT:-}" ] && [[ "${JAVA_OPTS:-}" != *"${agent_port_property}"* ]]; then
        java_opts_array+=( "-D${agent_port_property}=${JENKINS_SLAVE_AGENT_PORT}" )
      fi
     

    因此在该脚本中设置JAVA_OPTS即可,在上面if语句前设置,内容如下:

    export JAVA_OPTS="-Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8"
    

     

    重启jenkins后生效:docker restart jenkins。 重新登录后见file.encodingsun.jnu.encoding终于变为UTF-8,至此测试打印中文生效:

     【场景2】

    这两天在用Jenkins构建maven编译任务时,发现有编码的报错:

    unmappable character for encoding ANSI_X3.4-1968

    我使用的Jenkins On Mesos框架,Jenkins Master和Jenkins Slave都是用Docker运行的。当时第一反应就是设置Docker容器的系统环境变量LANG为UTF-8,但是并没有解决问题。

    后来查看Jenkins节点的系统信息发现:

    上面的系统信息里面显示的sun.jnu.encoding ANSI_X3.4-1968与报错中的编码方式一致,推测应该是需要指定java运行参数来解决这个问题:file.encoding和sun.jnu.encoding。于是,我在制作Docker镜像的Dockerfile中加了一段,指定UTF-8编码:

    ENV JAVA_OPTS -Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8

    Jenkins Master和Jenkins Slave的Docker容器里环境变量和java参数都设置了,但是问题还没有解决,感觉很奇怪。后来,无意中,在Jenkins的【系统管理】-【系统设置】里面发现有个【全局属性】,这里可以设置Jenkins节点共用的环境变量。于是,我在这里又设置了一遍JAVA_OPTS:

    当我再次构建maven编译任务的时候,报错已经没有了。问题解决!
    (让我有些疑惑的是,为什么前面设置的不行呢?)


    ————————————————
    版权声明:本文为CSDN博主「felix_yujing」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/felix_yujing/article/details/52579248

  • 相关阅读:
    搜索回车跳转页面
    登录验证码
    【排序算法】排序算法之插入排序
    PAT 乙级 1044 火星数字 (20 分)
    PAT 甲级 1035 Password (20 分)
    PAT 甲级 1041 Be Unique (20 分)
    PAT 甲级 1054 The Dominant Color (20 分)
    PAT 甲级 1027 Colors in Mars (20 分)
    PAT 甲级 1083 List Grades (25 分)
    PAT 甲级 1005 Spell It Right (20 分)
  • 原文地址:https://www.cnblogs.com/a00ium/p/15272416.html
Copyright © 2011-2022 走看看