简介
相比在主机中直接安装各种基础服务,在Docker中安装和升级都更方便,也更不容易破坏其他的基础服务。下面总结一下Jenkins在Docker中的使用。
安装并运行Jenkins
安装并运行命令如下:
docker run -d -u root --restart always --name jenkins \
-e "JAVA_OPTS=-Dorg.apache.commons.jelly.tags.fmt.timeZone=Asia/Shanghai -Duser.timezone=Asia/Shanghai -Dorg.apache.commons.jelly.tags.fmt.timeZone=Asia/Shanghai" \
--group-add $(stat -c '%g' /var/run/docker.sock) \
-v /etc/localtime:/etc/localtime:ro \
-v /opt/data/jenkins/workspace/:/usr/src/app \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $(which docker):$(which docker) \
-v /data/jenkins:/var/jenkins_home \
-v /data/jenkins_tool:/jenkins_tool \
-v /data/jenkins_tool/repo:/repo \
-p 8099:8080 -p 50000:50000 \
jenkins/jenkins:lts
Jenkins的Docker官方镜像中有很多参数的解释,这里列出其中一些参数以及使用原因:
-u root
使用root启动镜像中的Jenkins服务,会有一定安全风险,但权限方面会方便很多,也考虑到是在内网中运行所以问题不大
-e xxxxxxxx
和-v /etc/localtime:/etc/localtime:ro
设置Jenkins的时区
-v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):$(which docker)
这两条参数让在Docker中的Jenkins也能访问宿主机中的Docker,让项目的构建环境(如maven、node)也能够在Docker中运行构建
-p 50000:50000
用于与Jenkins slave通信
设置Jenkins
由于众所周知的原因,如果在中国大陆地区,最好在设置向导时,取消全部插件的下载安装,直接进入Jenkins,并修改更新站点之后,再下载插件。修改更新站点方法如下:
- 登录Jenkins之后,直接访问站点设置页面:http://jenkins-url:8099/pluginManager/advanced
- 在最底部找到【升级站点】设置模块,把站点连接修改为
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
,再点击下面的Submit
和Check Now
- 由于Jenkins的校验等各种原因,即使设置了镜像站,下载插件的地址也没有修改为对应的镜像站地址,需要再用些其他技巧:
- 手动更改
${JENKINS_HOME}/updates/default.json
文件:如果不常找新的插件或更新插件,可以临时修改一下该文件后再下载插件。执行如下命令就可以修改:sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' ${JENKINS_HOME}/updates/default.json
- 代理
updates.jenkins-ci.org
域名:可以把该域名在HOSTS或内部的DNS
服务器中配置成Nginx
或其他代理的地址,通过该代理地址来下载。
- 手动更改
Java构建常用基本插件
- Build Timeout
- Folders
- Git
- Timestamper
- Workspace Cleanup
- Pipeline
- Publish Over SSH
- Maven Integration
参考资料
[1] Jenkins的Docker官方镜像:https://github.com/jenkinsci/docker
评论
发表评论