Rancher+Jenkins+docker+git实现项目快速发版
平时我们每次代码更新之后很多时候需要对服务器进行发版,来测试在生产环境的运行情况,现在一般使用的是docker镜像的形式,怎么方便怎么来嘛,不过一般项目发版的话会经历到以下几个步骤:
idea上进行打包--------docker打包成镜像---------镜像上传到镜像仓库-------服务器从镜像仓库中拉取镜像-------运行镜像
看起来不怎么麻烦,如果项目多的话每次发版都超级浪费时间
为了方便,这里就介绍一下怎么利用rancher和jenkins实现自动发版,到时候只要点击一个按钮就能完成上面的所有流程操作了
备注:(我这边是快速过一下流程,有些具体的环境搭建需要自己去查找)
环境搭建
1.服务器配置jenkins
网上有很多的教程,这边推荐一个老师的教程文档,可以按照来配置jenkins:https://www.it235.com/%E5%AE%9E%E7%94%A8%E5%B7%A5%E5%85%B7/%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90/jenkins.html#%E5%B8%B8%E7%94%A8%E6%8F%92%E4%BB%B6%E5%AE%89%E8%A3%85
配置好之后显示当前界面即可:
2.配置rancher
这里按照rancher的话是用到服务器docker镜像来安装配置的,我这边使用的是v2.5.5版本的,也是依据公司的版本来搭建的,这个你可以随意选择2.x以上的,具体docker如何拉取镜像和运行镜像之类的就不仔细介绍了
进入到rancher后搭建集群,你可以选择自己服务器来进行搭建集群,不过相对于来说内存会比较大,我这边是直接拿公司的来用了,你也可以选择阿里云,腾讯云之类的那些,不过需要花钱(穷)。
成功搭建之后如下图所示:
具体的搭建教程在网上找。
3.配置镜像仓库
镜像仓库的话可以选择自己搭建harbor,不过我为了节省时间快速搭建,就直接在阿里云上面创了一个镜像仓库,反正也是免费
创建好之后阿里云上面有镜像的操作说明,你根据上面的操作指引就能使用啦
具体申报创建请自行查找
2. 具体实现流程
1.创建项目
这里以一个demo所示,项目结构如下:
就只有一个方法,当前项目要与gitee上面匹配,用来提交代码
自行查看是否能进行正常的更新操作,idea正常push上去的话说明没有问题,不一定要用gitee,也可以使用github等代码管理工具
2.配置jenkins
1.进入到全局工具配置,搭建jdk和maven
这里的jdk和maven我使用自动安装的(插件管理记得安装==maven,git,ssh)==一定要用到的。
2.配置凭据,需要配置git的和服务器的,用的是当前的账号和密码,确认无误
3.创建一个maven项目
配置源码管理,复制刚刚项目的git地址到url上面去,添加凭据以及指定分支,正常连接的情况下不会显示任何红色字体的提示:
构建环境,这里需要连接到远程服务器中运行脚本
整个jenkins的原理就是从git上面把代码打包成jar包拉到服务器中去,再到服务器中运行shell脚本来使jar包打包成镜像,推到镜像仓库中去
shell脚本如下:这里有个提醒,不要在windows上面写完直接拉到服务器中去,会出现编码的问题,非常的坑,最好在服务器中创建shell脚本
备注都写在上面了
#!/bin/bash
#删除旧版本的jar包
rm -f /root/docker/jenkins-demo/*.jar
#把jenkins从git上面拉下来的jar包复制到指定文件夹里面,文件夹后预先修改好docker file文件
cp -a /root/.jenkins/workspace/baiyaofeng/target/*.jar /root/docker/jenkins-demo/
#吧复制过来的jar包改成dockerfile文件所对应的名称,不然不能进行打包
mv /root/docker/jenkins-demo/jenkins-demo-0.0.1-SNAPSHOT.jar /root/docker/jenkins-demo/jenkins-demo.jar
#进入到要打包成镜像的文件夹
cd /root/docker/jenkins-demo
#删除之前已经存在的同名镜像
docker rmi --force $(docker images | grep byf | awk '{print $3}')
#打成镜像
docker build -t jenkins-demo.jar .
#打标签,推上镜像仓库
docker tag jenkins-demo.jar registry.cn-shenzhen.aliyuncs.com/byf1/byf:jenkins-demo.jar
docker push registry.cn-shenzhen.aliyuncs.com/byf1/byf:jenkins-demo.jar
备注:不能直接从windows写好shell脚本上传到服务器中,会出现编码问题
4.jenkins构建任务
直接点击配置好的项目,进行立即构建,查看控制台看看是否构建成功
正常无误后可以在镜像仓库中查看到当前的镜像已经上传上来了
如上所示
3.rancher上运行镜像
rancher配置工作负载,如下所示,docker镜像填当前镜像仓库的pull命令,可以参照我这个来,然后配置好暴露的端口号,必须大于30000端口
点击启动,查看到运行成功后尝试访问能正常访问说明已经搭建成功了,可以查看下服务器docker镜像是否也同时的运行,一切正常就说明流程走完了。
然后每次上传完代码到git上面去之后,直接在jenkins去构建一下项目,再去rancher上面对刚刚运行的工作负载进行升级
即可自动替换到最新的代码,发版到服务器。
配置还是挺复杂的,需要自己去摸索,大概流程如上所示这些。后续就不用再重新配置了,点两下就能发版,岂不乐哉