网站建设+深圳+凡科,深圳住房建设局官网,wordpress图片主题,提升学历报名入口文章目录 前言实例讲解基本环境全局工具配置创建任务任务配置源码管理构建步骤#xff08;Build Steps#xff09;第一步#xff1a;调用Maven第二步#xff1a;执行shell启动容器 后记 前言
你平常在做自己的项目时#xff0c;是否有过部署项目太麻烦的想法#xff1f;… 文章目录 前言实例讲解基本环境全局工具配置创建任务任务配置源码管理构建步骤Build Steps第一步调用Maven第二步执行shell启动容器 后记 前言
你平常在做自己的项目时是否有过部署项目太麻烦的想法如果你是单体项目可能没什么感触但如果你是微服务项目相信你应该是有过这种感触的。
这种情况下我一般会劝你了解一下Jenkins这个玩意。怎么了解呢我会建议你阅读本文。
本文分为一个简单的Jenkins自动化构建部署实例讲解如果你还没有安装这个玩意可以先阅读我的另一篇文章Linux下的Jenkins安装教程_阿杆.它会教你如何在Linux上安装Jenkins。 实例讲解
接下来我会拿出我的用户微服务构建任务的实际配置来向你进行解读当你了解了Jenkins自动化构建部署的工作原理后你便可以很快的上手这个玩意因为你会发现它是如此的简单。 此实例是基于我的开源项目校园博客的Jenkins部分进行讲解的开源地址stick-i/scblogs: 校园博客基于微服务架构且前后端分离的博客社区系统。项目后端技术栈SpringBoot SpringCloud Mybatis-Plus Nacos MySQL Redis MQ ElasticSearch Docker。前端主要是基于Vue2和ElementUI进行开发的。 (github.com) 基本环境
在此之前我需要介绍一下我的基本环境 我的操作环境为Windows但是我要把微服务部署到一台Linux服务器上去包括Jenkins也是安装在这个上面的。 服务器上安装了Jenkins、Git、Docker、JDK、Maven、NodeJs都是些拿来构建的东西都是单独安装的而不是跑在Docker上。 而项目服务都是跑在Docker上的还有Redis这种轻量的中间件也跑在Docker上。 我的项目已经在Git仓库里放好了放github或者gitee或者gitlab都行。
全局工具配置
在Jenkins上我已经配置好了这些构建工具的路径以便于Jenkins可以直接调用到他们在系统管理 - 全局工具配置 这个页面下这张图有点长 在这张图上你可以看到其中有一部分的配置是有路径的还有一部分配置是没有路径的这是因为我把他们的命令路径加到了系统路径上即使不添加完整路径Jenkins也可以调用到它们。
创建任务
好现在我们已经准备好环境了可以创建一个任务来试试水了输入任务名称然后选择构建一个自由风格的软件项目 别问我在哪新建任务请你返回首页好好看看 任务配置
源码管理
现在我们已经进入到任务配置界面了往下划到源码管理的地方选择Git然后填写仓库地址等信息 添加Credentials的时候如果你会使用SSH密钥的话建议还是用这个但你得在机器上进行格外的配置这里我就不多说了不会的话直接用账号密码也是可以的 构建步骤Build Steps
第一步调用Maven
点击增加构建步骤由于我们是Maven管理的项目需要先使用Maven构建所以第一步就用调用顶层Maven目标 选择maven版本然后target根据项目的实际情况编写我的命令是这样的
先构建jar包执行install的过程中会先执行package的所以我直接install。我的项目中单元测试是没怎么梳理的所以我使用参数-Dmaven.test.skiptrue跳过单元测试。然后我得打包成docker镜像我使用的是dockerfile-maven-plugin这个Maven插件所以打包docker镜像的步骤就也放在maven里面了构建docker镜像的信息都在项目的pom文件里面。
install -Dmaven.test.skiptrue
dockerfile:build -f user-service/user-server/pom.xml构建完镜像了接下来我们直接使用这个镜像创建容器然后运行就完事了。
第二步执行shell启动容器
再添加一个构建步骤正常情况下我们调用docker通过命令行调用就可以了所以我们现在也添加一个执行shell的步骤即可。 具体的命令也很简单就这么几步
清理之前的旧镜像。由于我们刚刚构建了一个新的镜像新镜像和旧镜像的名称和版本我们是没有改的所以旧的镜像就会自动变成none使用命令docker image prune -f 就可以清理掉这部分镜像。停止旧容器运行并删除旧容器。当然我们得先判断一下是否存在旧容器使用容器名称来进行判断这部分指令涉及到shell和docker的命令知识看不懂没关系可以直接cv注意修改容器名称就好。调用docker启动容器根据项目实际情况来设定不同的参数我这里设置了网络模式为host并且映射了一个容器卷用于读取nacos的地址再指定容器名称为user-service最后指定使用的镜像名称。
大功告成完整命令如下 # 清理镜像
docker image prune -f # 清理容器
if [ -n $(docker ps -a -f nameuser-service --format {{.ID}} ) ] then#停止容器运行docker stop $(docker ps -a -f nameuser-service --format {{.ID}} )#删除之前的容器docker rm $(docker ps -a -f nameuser-service --format {{.ID}} )
fi# 启动容器
docker run -d --nethost -v scblogs-config:/config -e PARAMS$params --name user-service scblogs/user-server最后别忘了点击保存 后记
经过上面这些步骤我们完成了一个基本的自动化构建脚本这个脚本会调用maven把我的项目打包然后构建成一个docker镜像再通过一段shell命令去启动这个程序。
如果你想尝试启动这个构建任务的话你可以回到主页点击右边的绿色符号。 当然你大概率是会构建失败的。因为我的这份实例讲解并没有完全的讲清楚甚至里面有很多步骤你都看不懂是不是
其实我并没有想写一份手把手的Jenkins使用教程因为这要写的内容实在是太多了
还记得我在实例讲解的最开始写的吗写这个构建案例的目的是让你了解Jenkins自动化构建的原理如果你看到这里已经发现了这自动化构建其实就跟我们手动构建部署差不多只不过是把手动操作的东西设定成了脚本那你就已经有能力去自己摸索它了。
用用插件、写写脚本就可以搞定自己项目的自动化部署啦。 实际情况是我有一台服务器专门用于Jenkins自动化部署还有一台服务器专门用于生产环境这两台服务器都可以连接到外网也可以互相访问到彼此。这是由于Jenkins构建时是会比较吃CPU的为了不影响生产环境所以我把它们分开了。当然这种情况下脚本也会稍微复杂一点具体流程大概是下面这样的 如果你对我的项目感兴趣欢迎访问项目的GitHub地址stick-i/scblogs: 校园博客基于微服务架构且前后端分离的博客社区系统。项目后端技术栈SpringBoot SpringCloud Mybatis-Plus Nacos MySQL Redis MQ ElasticSearch Docker。前端主要是基于Vue2和ElementUI进行开发的。 (github.com) 都看到这里了各位靓仔、靓妹请帮我点一个赞吧