前言:
自动化部署可以说是项目的必须,其中jenkins可以说是标配了。jenkins在持续集成、持续交付、持续部署方面做得都很好也就是常说的CI、CD。这篇文章就总结下使用docker来搭建jenkins的过程,并记录这中间踩过的坑,防止再踩,同时也为想要学习jenkins的同学提供一点借鉴。
一、搭建jenkins
使用docker搭建jenkins其实很简单,但是对于镜像的选择还是需要考虑的。jenkins官方推荐使用jenkinsci/blueocean这个镜像,请不要去直接下载jenkins的镜像,这个镜像不好用,建议使用官方推荐的镜像:jenkinsci/blueocean。这里笔者使用的是该镜像的1.24.1-bcc31d32159f这个版本,这个镜像的jenkins是2.2版本的,只不过镜像的tag不是2.2而已,这个不需要在意。同时这个镜像的jdk是1.8的,刚好适用。
1.使用docker安装jenkins
若是没有docker的话,可以参考这篇文章进行安装:centos7安装docker,下面是使用docker安装jenkins的过程。
1)执行命令:
# 下载jenkins镜像,这是官方推荐的镜像 docker pull jenkinsci/blueocean:1.24.1-bcc31d32159f # 创建容器并启动 docker run -d -u root -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime --name MyJenkins jenkinsci/blueocean:1.24.1-bcc31d32159f
2)运行截图:
3)参数解释:
这块都是参数的解释,可以不看。笔者选择这个版本的原因是他的jdk是jdk8的,最新版的镜像的jdk是jdk11,而且这个镜像的jenkins版本也是2.X版是够用的。此外解释下docker run后面的参数:
参数-d:表示后台运行,容器不会因为退出而停止。
参数-u:表示以什么用户启动容器,这里是以root用户启动容器,这样后期操作容器不会出现权限不足的问题(笔者碰到过)。
参数-p:表示端口映射,冒号左边是宿主机端口,右边是容器端口。端口映射后访问宿主机这个端口就相当于访问容器的这个端口。
参数-v:表示文件/目录共享,专业来说叫数据卷。冒号左边是宿主机的目录,右边是容器目录,通过这种共享在容器启动后容器内的目录下的内容都会共享到宿主机的目录下,这样我们想要查询信息就会比较方便,就不需要再进入容器了。
参数–name:表示为容器起个名字,在容器比较多时使用名称可以很快的区分各个容器,注意这个参数是两个间隔符,不是一个。
2.查看jenkins容器是否正常启动
- 1)执行命令
# 该命令可以查看所有容器的大致信息 docker ps -a
2)运行截图
3)参数解释
这里执行的命令很简单,就是一个查看容器信息的ps命令,与linux中的ps差不多。那就解释下8080端口和50000端口吧。8080端口是管理控制台的端口,我们访问jenkins的控制台页面就是通过这个端口。至于50000端口也是必须的,50000端口是jnpl的端口,这要从jenkins是java实现的说起,我们可能会发现jenkins既然是java实现为什么安装jenkins后可以直接通过浏览器访问呢?而不需要tomcat等web服务器呢?这就是因为jnlp。jnlp可以让java程序直接通过浏览器来进行访问,就是访问web服务器一样。而这个50000端口就是因为这个开的。
3.查看jenkins的初始密码
- 1)执行命令
# 创建完容器后可以使用这个命令查看初始密码 docker logs 容器名/id # 若是隔了很久,用上面的命令可能看不到密码信息,我们还可以直接使用这个命令查看 cat /var/jenkins_home/secrets/initialAdminPassword
2)运行截图
3)参数解释
这两个命令都是用于查看初始密码的,好像也没有刻意解释什么的。
4.登录jenkins的管理页面
1)输入ip:8080登录页面
然后就会进入到如下页面,在输入框中输入刚刚看到的初始密码,然后稍许等待即可。
2)选择推荐插件
安装插件时可能有一部分会失败,大部分情况都会全部成功。若有部分失败,也基本无影响,请忽略他(笔者多次安装都失败了7个左右,并不影响正常使用,因为部分插件我们也用不到)。
3)创建初始用户
这里用户名密码啥的自己随便填就行,别忘了就行。然后就一直下一步就行,最后jenkins会自动重启,重启完成后我们就可以进入jenkins的管理页面了。
5.安装必须的插件
其实到jenkins我们已经安装完成了,只需要在安装一些需要使用的插件就可以正常使用了。这里笔者安装三个插件maven、gitee、Post build task。其中maven用来打包程序、gitee是因为笔者代码在gitee上,需要从gitee上拉取代码,Post build task这个插件是用来打包完成后部署服务执行shell脚本使用的。安装插件有两种途径一种是在“全局配置工具”中安装,一种是在“插件管理”中安装,这里笔者会两个地方都使用。
1)安装maven
这里在“全局配置工具”中安装maven。
然后我们找到配置maven的地方进行如下配置即可,其中maven版本自己选择即可。配置完成后先点击“应用”按钮,再点击保存即可。
2)安装gitee
这里从“插件管理”中安装gitee。
进入到“插件管理”后,在“可选插件”一栏搜索gitee然后点击直接安装即可。
然后等待安装完成即可,这里基本不会失败的。安装完成后先不要重启jenkins,等我们装完所有插件后再进行重启jenkins。
3)安装Post build task
这个插件和gitee的安装没什么区别,如下图所示
待安装完成后,勾选如下按钮,让jenkins空闲时间进行重启来使插件生效,事实上只要jenkins没有在打包和部署就是空闲时间,所以勾选就会立马重启jenkins。
二、总结安装
这样其实jenkins就装完了,也配置完了,整个安装过程其实不难,对于初次使用jenkins的同学来说困难的可能就是选择插件的问题。这里总结下插件,其实总共需要的有JDK、Git/Gitee、Maven、Postbuild task这些。JDK容器自带了,而且都是配置好的,所以在jenkins页面里我们无需多余一次配置。Git也是自带的,若是使用的Gitee则需要重新安装插件,也是安装即可,安装完成后无需在“全局配置管理”中进行配置。同样的Maven、Post build task都是安装完毕即可,无需其他配置。安装完成后下面就是需要进行搭建持续集成、持续交付、持续部署的环境了。