一种基于负载均衡mvn构建发布回滚技术的制作方法

文档序号:30222489发布日期:2022-05-31 22:55阅读:96来源:国知局
一种基于负载均衡mvn构建发布回滚技术的制作方法

1.本发明涉及springboot框架的java项目发布回滚技术领域,具体为一种基于负载均衡mvn构建发布回滚技术。


背景技术:

2.mvn又叫maven,是专门用于构建和管理java相关项目的工具,使用maven管理项目的好处主要有两点,其一是使用maven管理的java项目都有着相同的项目结构,有一个pom.xml用于维护当前项目都用了哪些jar包,所有的java代码都放在src/main/java下面,所有的测试代码都放在src/test/java下面;其二是便于统一维护jar包,maven风格的项目,把所有的jar包都放在了本地“仓库”里,然后哪个项目需要用到这个jar包,只需要给出jar包的名称和版本号就行了,这样就实现了jar包共享,避免每一个项目都有自己的jar包带来的麻烦。
3.传统基于负载均衡mvn的springboot框架的java项目发布回滚的操作具有较大的工作量,从而使得运维人员和java开发人员的工作量变大,手动上传代码的失误较多,进而使得开人员无法更快地交付开发成果、运维人员无法专注于java项目稳定性或者监控,为此提出一种基于负载均衡mvn构建发布回滚技术。


技术实现要素:

4.(一)解决的技术问题
5.针对现有技术的不足,本发明提供了一种基于负载均衡mvn构建发布回滚技术,通过设置手动发布回滚的方式以及自动发布回滚的方式来解决上述背景技术中提出的问题。
6.(二)技术方案
7.为实现上述目的,本发明提供如下技术方案:一种基于负载均衡mvn构建发布回滚技术,包括自动发布回滚和手动发布回滚,其两者的步骤如下:
8.自动发布回滚:
9.s01、java项目发布回滚代码脚本的推送;
10.s02、java项目代码的拉取;
11.s03、java项目代码的构建;
12.s04、java项目代码的发布;
13.s05、java项目代码的回滚;
14.s06、java项目域名检测;
15.手动动发布回滚:
16.s01、执行手动发布回滚的脚本;
17.s02、java项目代码的拉取;
18.s03、java项目代码的构建;
19.s04、java项目代码的发布;
20.s05、java项目代码的回滚;
21.s06、java项目域名检测。
22.优选的,根据自动发布回滚中步骤s01所提出的,其推送包括以下两点:
23.1)、操作者在jenkins页面时通过手动点击发布按钮,通过账号密钥或者是账号密码的方式拉取svn仓库中的java项目发布回滚代码脚本;
24.2)、操作者对java项目代码修改提交通过svn钩子来促发jenkins通过账号密钥的方式拉取svn仓库的java项目发布回滚代码脚本
25.3.根据权利要求1所述的一种基于负载均衡mvn构建发布回滚技术,其特征在于:根据自动发布回滚中步骤s02所提出的,执行脚本的代码拉取部分,svn命令通过账号密钥ssh的方式,将svn仓库的java项目代码进行拉取,存放在jenkins java项目所在的工作目录上。
26.优选的,根据自动发布回滚中步骤s03所提出的,其构建包括以下三点:
27.1)、修改application.yaml配置,主要是数据库相关配置修改,例如账号、密码等;
28.2)、执行脚本的代码构建部分,调用mvn命令;
29.3)、mvn clean package-dmaven.test.skip=true:对java项目构建打包,构建完成后在target目录生成项目的jar包,jar包为项目所需的项目包。
30.优选的,根据自动发布回滚中步骤s04所提出的,执行脚本的代码发布部分,调用sup_gengxin目录上sup_gengxin.sh脚本,执行发布部分;
31.通过目标ip列表遍历的方式来调用,发布的项目先通过ansible调用shell模块修改nginx服务器的nginx配置,把项目对应的url的权重修改为0,再通过调用ansible命令的copy模块把构建好的项目的jar包和发布脚本deploy.sh远程复制到目标的项目服务器上,先通过ansible调用deploy.sh执行项目的发布,通过状态码的返回是否成功,通过ansible调用shell模块修改nginx服务器的nginx配置,把项目对应的url的权重修改为100,这样就完成了java项目代码的发布,其中deploy.sh具体过程如下:
32.4)、创建相应目录:判断项目的目录,项目带版本号的备份目录是否存在,如不存在,用mkdir命令进行创建;
33.5)、停止项目的进程:判断项目的进程是否存在,如果存在,通过kill命令的方式杀掉项目的进程;
34.6)、备份项目的资源:判断项目旧资源是否存在,如果存在,把项目的旧资源备份到备份目录上;
35.4)、发布项目的资源:把远程复制的jar包直接mv到项目的目录上;
36.5)、启动项目的进程:判断项目的jar包是否存在,如果存在,通过java命令的方式启动jar包并通过ps命令的方式抓取进程号,确定状态码返回额外说明;
37.6)、ansible命令的方式需要在构建服务器设置好密钥文件,目标项目服务器需要设置好公钥文件;
38.优选的,根据自动发布回滚中步骤s05所提出的,执行脚本的代码回滚部分,调用sup_gengxin目录上sup_gengxin.sh脚本,执行回滚部分,通过目标ip列表遍历的方式来调用,回滚的项目先通过ansible调用shell模块修改nginx服务器的nginx配置,把项目对应的url的权重修改为0,再通过调用ansible命令的copy模块把rollback.sh远程复制到目标
的项目服务器上,先通过ansible调用rollback.sh执行项目的回滚,通过状态码的返回是否成功,通过ansible调用shell模块修改nginx服务器的nginx配置,把项目对应的url的权重修改为100,这样就完成了java项目代码的回滚,其中rollback.sh具体过程如下:
39.1)、停止项目的进程:判断项目的进程是否存在,如果存在,通过kill命令的方式杀掉项目的进程;
40.2)、备份项目的资源:判断项目旧资源是否存在,如果存在,把项目的旧资源备份到备份目录上;
41.3)、回滚项目的资源:把需要回滚的版本目录的jar包直接cp到项目的目录上;
42.4)、启动项目的进程:判断项目的jar包是否存在,如果存在,通过java命令的方式启动jar包并通过ps命令的方式抓取进程号,确定状态码返回。
43.优选的,根据自动发布回滚中步骤s06所提出的,执行脚本的代码检测部分,执行curl命令来检查项目域名的返回状态,判断是否异常,并通过脚本邮件告知操作者和java小组人员。
44.优选的,根据手动发布回滚中步骤s01所提出的,输入发布回滚的java项目,脚本读取java项目的配置文件,进行发布回滚,发布时需要项目名称,deploy,回滚时需要输入项目名称,rollback,需回滚的版本号。
45.优选的,根据手动发布回滚中步骤s02所提出的,执行脚本的代码拉取部分,svn命令通过账号密钥ssh的方式,将svn仓库的java项目代码进行拉取,存放当前工作目录上。
46.优选的,手动发布回滚中步骤s03至s06的流程与自动发布回滚中步骤s03至s06相同。
47.(三)有益效果
48.与现有技术相比,本发明提供了一种基于负载均衡mvn构建发布回滚技术,具备以下有益效果:
49.1、自动发布的方式:当java开发人员本地提交或者修改代码,只需要在网页上点击一个按钮,或者点击按钮这一步都省略掉,项目的代码就能自动发布到测试或者线上的环境上,等待邮件告知就可以知道java项目自动发布回滚的情况;
50.2、手动发布的方式:当java开发人员或者运维人员只需在脚本目录上执行脚本就可以把项目的代码就能自动发布到测试或者线上的环境上,等待邮件告知就可以知道java项目自动发布回滚的情况;
51.以上两种方式都能够帮助java开发人员更加专注于开发代码上面,更快地修复问题,更快地交付成果;运维人员就可以专注于java项目稳定性或者监控等等这一块上面,减少手动上传代码的失误。
附图说明
52.图1为本发明自动发布回滚技术的流程图;
53.图2为本发明手动发布回滚技术的流程图。
具体实施方式
54.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完
整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
55.本发明提供一个技术方案,一种基于负载均衡mvn构建发布回滚技术,如图1所示,包括自动发布回滚和手动发布回滚,其两者的步骤如下:
56.自动发布回滚:
57.s01、java项目发布回滚代码脚本的推送;
58.s02、java项目代码的拉取;
59.s03、java项目代码的构建;
60.s04、java项目代码的发布;
61.s05、java项目代码的回滚;
62.s06、java项目域名检测;
63.如图2所示,手动动发布回滚:
64.s01、执行手动发布回滚的脚本;
65.s02、java项目代码的拉取;
66.s03、java项目代码的构建;
67.s04、java项目代码的发布;
68.s05、java项目代码的回滚;
69.s06、java项目域名检测。
70.优选的,根据自动发布回滚中步骤s01所提出的,其推送包括以下两点:
71.1)、操作者在jenkins页面时通过手动点击发布按钮,通过账号密钥或者是账号密码的方式拉取svn仓库中的java项目发布回滚代码脚本;
72.2)、操作者对java项目代码修改提交通过svn钩子来促发jenkins通过账号密钥的方式拉取svn仓库的java项目发布回滚代码脚本。
73.3.根据权利要求1所述的一种基于负载均衡mvn构建发布回滚技术,其特征在于:根据自动发布回滚中步骤s02所提出的,执行脚本的代码拉取部分,svn命令通过账号密钥ssh的方式,将svn仓库的java项目代码进行拉取,存放在jenkins java项目所在的工作目录上。
74.优选的,根据自动发布回滚中步骤s03所提出的,其构建包括以下三点:
75.1)、修改application.yaml配置,主要是数据库相关配置修改,例如账号、密码等;
76.2)、执行脚本的代码构建部分,调用mvn命令;
77.3)、mvn clean package-dmaven.test.skip=true:对java项目构建打包,构建完成后在target目录生成项目的jar包,jar包为项目所需的项目包。
78.优选的,根据自动发布回滚中步骤s04所提出的,执行脚本的代码发布部分,调用sup_gengxin目录上sup_gengxin.sh脚本,执行发布部分;
79.通过目标ip列表遍历的方式来调用,发布的项目先通过ansible调用shell模块修改nginx服务器的nginx配置,把项目对应的url的权重修改为0,再通过调用ansible命令的copy模块把构建好的项目的jar包和发布脚本deploy.sh远程复制到目标的项目服务器上,先通过ansible调用deploy.sh执行项目的发布,通过状态码的返回是否成功,通过ansible
调用shell模块修改nginx服务器的nginx配置,把项目对应的url的权重修改为100,这样就完成了java项目代码的发布,其中deploy.sh具体过程如下:
80.7)、创建相应目录:判断项目的目录,项目带版本号的备份目录是否存在,如不存在,用mkdir命令进行创建;
81.8)、停止项目的进程:判断项目的进程是否存在,如果存在,通过kill命令的方式杀掉项目的进程;
82.9)、备份项目的资源:判断项目旧资源是否存在,如果存在,把项目的旧资源备份到备份目录上;
83.4)、发布项目的资源:把远程复制的jar包直接mv到项目的目录上;
84.5)、启动项目的进程:判断项目的jar包是否存在,如果存在,通过java命令的方式启动jar包并通过ps命令的方式抓取进程号,确定状态码返回额外说明;
85.6)、ansible命令的方式需要在构建服务器设置好密钥文件,目标项目服务器需要设置好公钥文件;
86.优选的,根据自动发布回滚中步骤s05所提出的,执行脚本的代码回滚部分,调用sup_gengxin目录上sup_gengxin.sh脚本,执行回滚部分,通过目标ip列表遍历的方式来调用,回滚的项目先通过ansible调用shell模块修改nginx服务器的nginx配置,把项目对应的url的权重修改为0,再通过调用ansible命令的copy模块把rollback.sh远程复制到目标的项目服务器上,先通过ansible调用rollback.sh执行项目的回滚,通过状态码的返回是否成功,通过ansible调用shell模块修改nginx服务器的nginx配置,把项目对应的url的权重修改为100,这样就完成了java项目代码的回滚,其中rollback.sh具体过程如下:
87.1)、停止项目的进程:判断项目的进程是否存在,如果存在,通过kill命令的方式杀掉项目的进程;
88.2)、备份项目的资源:判断项目旧资源是否存在,如果存在,把项目的旧资源备份到备份目录上;
89.3)、回滚项目的资源:把需要回滚的版本目录的jar包直接cp到项目的目录上;
90.4)、启动项目的进程:判断项目的jar包是否存在,如果存在,通过java命令的方式启动jar包并通过ps命令的方式抓取进程号,确定状态码返回。
91.优选的,根据自动发布回滚中步骤s06所提出的,执行脚本的代码检测部分,执行curl命令来检查项目域名的返回状态,判断是否异常,并通过脚本邮件告知操作者和java小组人员。
92.优选的,根据手动发布回滚中步骤s01所提出的,输入发布回滚的java项目,脚本读取java项目的配置文件,进行发布回滚,发布时需要项目名称,deploy,回滚时需要输入项目名称,rollback,需回滚的版本号。
93.优选的,根据手动发布回滚中步骤s02所提出的,执行脚本的代码拉取部分,svn命令通过账号密钥ssh的方式,将svn仓库的java项目代码进行拉取,存放当前工作目录上。
94.优选的,手动发布回滚中步骤s03至s06的流程与自动发布回滚中步骤s03至s06相同。
95.本装置的工作原理:
96.自动发布回滚具有以下前提:
97.构建服务器:需安装好maven,可以通过国内镜像进行下载,然后解压安装,配置好环境变量即可,主要用到的是mvn命令,作用是完成java编译,将生成的jar或者war文件放置到相应位置;
98.一个或者多个项目服务器:
99.1)、需要安装jdk1.8版本的tar包,通过国内镜像进行下载,然后解压安装,配置好环境变量即可;
100.2)、需要安装好nginx,挑选一台服务器当作nginx服务器,可通过yum或者编译安装的方式,配置好nginx,做反向代理配置,这里需要配置nginx负载均衡,通过加权轮询的方式,一个域名对应一个或者多个java的实例,确定好项目的域名并做好域名解析以及https域名证书(域名证书可选);
101.自动发布回滚包括以下步骤:
102.s01、java项目发布回滚代码脚本的推送;
103.该步骤中提出推送的点包括以下:
104.1)、操作者在jenkins页面时通过手动点击发布按钮,通过账号密钥或者是账号密码的方式拉取svn仓库中的java项目发布回滚代码脚本;
105.2)、操作者对java项目代码修改提交通过svn钩子来促发jenkins通过账号密钥的方式拉取svn仓库的java项目发布回滚代码脚本;
106.s02、java项目代码的拉取;
107.该步骤中执行脚本的代码拉取部分,svn命令通过账号密钥ssh的方式,将svn仓库的java项目代码进行拉取,存放在jenkins java项目所在的工作目录上;
108.s03、java项目代码的构建;
109.该步骤中的构建包括以下三点:
110.1)、修改application.yaml配置,主要是数据库相关配置修改,例如账号、密码等;
111.2)、执行脚本的代码构建部分,调用mvn命令;
112.3)、mvn clean package-dmaven.test.skip=true:对java项目构建打包,构建完成后在target目录生成项目的jar包,jar包为项目所需的项目包;
113.s04、java项目代码的发布;
114.执行脚本的代码发布部分,调用sup_gengxin目录上sup_gengxin.sh脚本,执行发布部分;
115.通过目标ip列表遍历的方式来调用,发布的项目先通过ansible调用shell模块修改nginx服务器的nginx配置,把项目对应的url的权重修改为0,再通过调用ansible命令的copy模块把构建好的项目的jar包和发布脚本deploy.sh远程复制到目标的项目服务器上,先通过ansible调用deploy.sh执行项目的发布,通过状态码的返回是否成功,通过ansible调用shell模块修改nginx服务器的nginx配置,把项目对应的url的权重修改为100,这样就完成了java项目代码的发布,其中deploy.sh具体过程如下:
116.1)、创建相应目录:判断项目的目录,项目带版本号的备份目录是否存在,如不存在,用mkdir命令进行创建;
117.2)、停止项目的进程:判断项目的进程是否存在,如果存在,通过kill命令的方式杀掉项目的进程;
118.3)、备份项目的资源:判断项目旧资源是否存在,如果存在,把项目的旧资源备份到备份目录上;
119.4)、发布项目的资源:把远程复制的jar包直接mv到项目的目录上;
120.5)、启动项目的进程:判断项目的jar包是否存在,如果存在,通过java命令的方式启动jar包并通过ps命令的方式抓取进程号,确定状态码返回额外说明;
121.6)、ansible命令的方式需要在构建服务器设置好密钥文件,目标项目服务器需要设置好公钥文件;
122.s05、java项目代码的回滚;
123.该步骤中执行脚本的代码回滚部分,调用sup_gengxin目录上sup_gengxin.sh脚本,执行回滚部分,通过目标ip列表遍历的方式来调用,回滚的项目先通过ansible调用shell模块修改nginx服务器的nginx配置,把项目对应的url的权重修改为0,再通过调用ansible命令的copy模块把rollback.sh远程复制到目标的项目服务器上,先通过ansible调用rollback.sh执行项目的回滚,通过状态码的返回是否成功,通过ansible调用shell模块修改nginx服务器的nginx配置,把项目对应的url的权重修改为100,这样就完成了java项目代码的回滚,其中rollback.sh具体过程如下:
124.1)、停止项目的进程:判断项目的进程是否存在,如果存在,通过kill命令的方式杀掉项目的进程;
125.2)、备份项目的资源:判断项目旧资源是否存在,如果存在,把项目的旧资源备份到备份目录上;
126.3)、回滚项目的资源:把需要回滚的版本目录的jar包直接cp到项目的目录上;
127.4)、启动项目的进程:判断项目的jar包是否存在,如果存在,通过java命令的方式启动jar包并通过ps命令的方式抓取进程号,确定状态码返回;
128.s06、java项目域名检测;
129.该步骤中执行脚本的代码检测部分,执行curl命令来检查项目域名的返回状态,判断是否异常,并通过脚本邮件告知操作者和java小组人员;
130.手动发布回滚的前提:在构建服务器上面上传好手动发布回滚的脚本,并需配置好java项目的配置文件;
131.主要的文件内容格式是:项目名称=项目目标服务器ip=项目的版本号,其中,项目目标服务器ip一个或者多个;
132.手动发布回滚的步骤如下:
133.s01、执行手动发布回滚的脚本;
134.该步骤中输入发布回滚的java项目,脚本读取java项目的配置文件,进行发布回滚,发布时需要项目名称,deploy,回滚时需要输入项目名称,rollback,需回滚的版本号;
135.s02、java项目代码的拉取;
136.该步骤中执行脚本的代码拉取部分,svn命令通过账号密钥ssh的方式,将svn仓库的java项目代码进行拉取,存放当前工作目录上;
137.s03、java项目代码的构建;
138.s04、java项目代码的发布;
139.s05、java项目代码的回滚;
140.s06、java项目域名检测;
141.手动发布回滚中步骤s03至s06的流程与自动发布回滚中步骤s03至s06相同。
142.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
143.尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1