原本一直使用gitlab作为代码管理和CI/CD工具,最近遇到一个需求,合作者不愿意把代码托管在私有的gitlab服务器上,希望使用gitee,后端代码每次打包部署比较费事,用gitlabgitee获取代码并进行CI/CD流水线比较麻烦(可能还要用到企业版功能),而gitee提供有jenkins插件,所以计划部署一套jenkins.

通过Docker部署

Jenkins官方提供了docker镜像,这就方便很多了,直接pull下来,笔者使用lts版本

docker pull jenkins/jenkins:lts

启动容器

docker run -it -d --name jenkins-server -p 8080:8080 50000:50000 jenkins/jenkins:lts

因为安装过程中需要通过log查看默认密码,通过console滚动显示日志

docker logs -f jenkins-server

从浏览器中打开对应的页面,按照提示默认安装就可以完成.
安装过程中,因为网络因素,几乎都会遇到插件安装非常慢,或者安装失败的问题,找的一个解决方案是替换为国内源.

配置Update Site

网上搜到的最多的替换方案,是使用清华镜像

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

但是,即使替换了,下载镜像依然很慢,查看出错信息,发现还是从国外的地址下载.
根据查阅的资料Jenkins 插件中心国内镜像源发布 所述,jenkins对update-center.json 这个文件有校验,需要安装jenkins的中文插件,插件替我们把校验这个事情给解决了.

经过测试,发现的确直接替换无效,并且如果在docker镜像中直接替换这个地址,运行还会报错,也从侧面反映的确有校验.

插件安装后,再进行update site替换,插件安装速度非常快了.

Docker镜像中预装插件

因为经常需要部署服务器,还是希望有些插件可以预先安装好,比如上面提到的中文插件, 在docker中很容易实现.

首先需要准备一个文件,列出需要预先安装的插件,例如命名为plugins.txt

#localization-zh-cn
localization-zh-cn:::https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/localization-zh-cn/latest/localization-zh-cn.hpi

在自定义的Dockerfile中,用官方镜像的脚本执行安装

FROM jenkins/jenkins:lts

COPY plugins.txt /usr/share/jenkins/ref/plugins.txt
RUN /usr/local/bin/install-plugins.sh < /usr/share/jenkins/ref/plugins.txt

这样build出来的镜像,就预装上了插件.

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐