简介
Jenkins的强大有一半基于丰富的插件,可国内安装/更新插件比较慢甚至经常超时。
常用的清华开源站或中科大开源站都是有jenkins的,有安装包也有更新地址,下载没问题,但配置插件更新却不行,要么不生效,要么提示验证错误。
经过一番探索,发现有Jenkins中文社区专门为中文用户提供服务,官方中文插件就是他们维护的,除此还有Jenkins中文定制版、插件库镜像、使用教程等,其官网是:https://jenkins-zh.cn/
不过,要加速插件下载依旧不是傻瓜式一键完成,本文就详细介绍下。
修改插件更新地址
中文社区提供的更新服务地址为:https://updates.jenkins-zh.cn/update-center.json,就像清华或中科大那样只配置这个依旧是不能用的。
插件镜像库的实现位于:https://github.com/jenkins-zh/update-center-mirror,切换到中文说明,可以看到使用步骤,如下图:
![]()
下面按照说明进行操作:
Jenkins -> Plugin Manager -> Available:
![]()
重启后登录,页面下方,点击“Jenkins 中文社区”,然后点击按钮“使用”:
点击“设置更新中心地址”(就是重定向到了“插件管理 -> 高级”),修改url后点击“提交”,然后点击右下角的“立即获取”:
![]()
然后就可以体验飞快的插件下载了。
进一步了解
加速插件下载的目的达到了,但还不想就此止步,要知道,完成配置的前提是安装好中文插件,不免要思考如果网络问题导致这个插件无法安装怎么办?
虽然可以通过清华或中科大下载离线插件,但那个还要考虑版本和依赖,太不优雅了,而且也想知道为什么清华和中科大的镜像库不能用,秘密就是在中文插件的“使用”功能中。
这就是开源的好处了,中文插件位于:https://github.com/jenkinsci/localization-zh-cn-plugin,是Java代码,很合理,因为Jenkins就是Java写的,git clone到本地,通过查看可以发现,“使用”其实是添加了一个key文件,具体是:
| localization-zh-cn-plugin/src/main/resources/mirror-adapter.crt |
拷贝到 |
${JENKINS_ROOT}/WEB-INF/update-center-rootCAs/ |
注:JENKINS_ROOT代指jenkins的程序目录,JENKINS_HOME则是jenkins的工作目录,jobs及workspace是位于工作目录。
原来jenkins访问插件库是需要key验证的,于是去清华和中科大寻找是不是有提供key,答案是没找到,可能是原先jenkins可以不用key,也可能是清华和中科大只是做了简单的同步并不打算提供完整的功能。
还好有jenkins中文社区,并且绕过中文插件手动配置明显是可行的,两个步骤即可:
1、修改更新url为:https://updates.jenkins-zh.cn/update-center.json,这个其实就是改文件:${JENKINS_HOME}/hudson.model.UpdateCenter.xml
2、下载key文件放到:${JENKINS_ROOT}/WEB-INF/update-center-rootCAs/
这里顺便提下如何单独下载github中的单个文件,比如上面的key文件,浏览器打开它的地址:https://github.com/jenkinsci/localization-zh-cn-plugin/blob/master/src/main/resources/mirror-adapter.crt
![]()
然后在“Raw"上右键另存到本地,或右键复制链接到Linux下用wget下载。
解决部分汉化的问题
安装中文插件后发现只有部分汉化,大部分还是英文,这种情况通常发生在设置为中文语言(zh_CN.UTF-8)的服务器上,而中文插件应该是以英文环境为基础的。
解决方式是先安装插件“Locale plugin”:
![]()
重启,然后进入设置,修改Locale为en_US.utf8(要保证locale -a中包含此项):
![]()
然后再重启即可。
使用docker镜像
如果不想那么麻烦,中文社区还提供了中文定制版的docker镜像,地址是:https://hub.docker.com/r/jenkinszh/jenkins-zh
直接开箱即用:
shell> docker pull jenkinszh/jenkins-zh:lts # 下载镜像,这里是lts版本
shell> docker run -u root --name jenkins -v /path/to/jenkins_home:/var/jenkins_home -p 8080:8080 -dt jenkinszh/jenkins-zh:lts # 启动容器
shell> docker exec -ti jenkins bash # 登录容器
由于自己的jenkins还要使用saltstack,用镜像的话要调整的就太多了,所以了解不多。
Jenkins中文社区还有其他项目,若有兴趣请自行前往了解,感谢他们的贡献。
OVER