说到CI(持续集成)也许你脑子里马上会蹦出一个著名的CI工具,就是我们本篇实践记录中的jenkins。 没错,jenkins能够帮助我们更容易的做到持续集成,但是也需要你不断的提交代码到主干,从而实现持续集成的目的。我经常在项目团队协作中提醒同事需要频繁的拉取与提交代码,但大部分人总习惯了每日一更,甚至几天一更,这是违背了我们持续集成的目的,提高了代码冲突的风险。
关于jenkins的安装方式可以多样化,常见于宿主机直接war包安装,这是比较简单的做法,但同时依赖于在宿主机先安装好JAVA环境。还有就是通过docker容器化的方式来安装,也是本篇即将采用的方式。
一、 部署Jenkins服务
我们通过 Rancher 部署服务来完成jenkins的安装。首先下载镜像,当然,从rancher的部署页中启动可以自动为我们下载部署的镜像,但我们这里为了更清晰的使用,采用了手动pull镜像的方式,执行如下命令:
$ docker pull jenkins/jenkins:alpine
同样我们可以通过docker inspect 命令查看镜像的详细信息,如下:
$ docker inspect jenkins/jenkins:alpine
当然如果你有镜像提供者的Dockerfile那就更好了,通常公开的常用镜像都可以在GitHub上找到,就比如我们现在使用的jenkins,它的Dockerfile地址是: https://github.com/jenkinsci/docker/blob/master/Dockerfile-alpine
有了Dockerfile,你可以更为清楚的了解这个镜像的制作过程,方便后面的使用。
接下来,在宿主机创建挂载文件夹
$ mkdir -p /docker_volume/jenkins_home
因为 jenkins user - uid 1000,所以这里我们更改目录用户组及用户(更详细的可见:https://github.com/jenkinsci/docker/blob/master/README.md#usage)
$ chown -R 1000:1000 /docker_volume/jenkins_home
在rancher的部署页中做如下操作:
- 输入名称 jenkins。
- 输入镜像名称jenkins/jenkins:alpine。
- 添加端口映射 30000:8080,30001:50000。
- 添加一个路径映射卷,卷名为jenkins-home,主机路径的话就是填入我们先前创建的/docker_volume/jenkins_home目录路径,选择为现有目录并映射到容器路径/var/jenkins_home目录路径。
- 点击启动按钮。
这几个步骤其实反应到我们docker容器中就如同下面的命令:
$ docker run -d --restart unless-stopped --name jenkins \
-p 30000:8080 -p 30001:50000 \
-v /docker_volume/jenkins_home:/var/jenkins_home \
jenkins/jenkins:alpine
点击启动后,会跳转到如下界面:
直到等到服务状态为Active后说明服务部署成功,你可以点击如下图中标红的连接,即:http://192.168.225.129:30000,就是我们先前对8080映射到了主机30000端口。
二、 初始化Jenkins
当jenkns服务部署成功后,我们需要对jenkins进行简单配置后才能使用。点击上面jenkins的访问地址 http://192.168.225.129:30000 后,就来到了j