使用Jenkins + docker 自动化部署Spring Cloud微服务的采坑之路 其二【不使用docker自动化部署微服务】

2019-5-17更新,此文章过于简陋不再具有参考性,请移步:https://blog.csdn.net/u012280292/article/details/90241596 

 

================================================================================================

 

在生产或者仿真的环境下我们通过docker可以轻松部署到多台服务器上,但是测试机上不需要搞这么多,也许我只希望我修改了代码后测试机上的服务自动构建而已,也不想搞什么docker容器,因为没必要,于是我就研究了下jenkins+spring cloud自动化部署,这个搞起来要比docker简单些,在这记录一下吧,也许能帮到有需要的人。

 

一、安装jenkins的maven插件

在jenkins的系统管理,插件管理中安装

Maven Integration plugin

Maven Invoker plugin

等插件

二、创建一个Jenkins任务

  好了,先让我们创建一个jenkins自动化部署的job,打开jenkins页面,点new任务,选择构建一个maven项目输入名字点ok,然后点configure进入项目设置,细的我就不说了,重点说一下重要的配置

 

三、配置jenkins job

 

Source Code Management

第一个是:Source Code Management下的配置,由于我用的是SVN,因此我点的是Subversion,然后配置了一下svn地址,这个地址配的是你的项目地址,如svn://192.168.1.1/svnrepos/java/myproject-master

 

Build Triggers

Build Triggers可以配置定时任务构建,或者每隔多长时间检查一下代码有没有变更,如果有变动则自动重新部署

 

Build

下一个要配的是Build:

Root POM 默认的pom.xml就行

Goals and options

Goals and options  配你的maven打包命令如 package -Ddockerfile.skip -Dmaven.test.skip=true  ,这个-Ddockerfile.skip是有用的,具体作用后面再说。

 

Post Steps

最后是Post Steps:

我是填的sh build.sh,也就是构建完成后执行的任务,我这里选执行sh脚本,毕竟启动spring boot还是得靠命令来启动,把这个build.sh放项目的根目录下就行了。

 

目前手头没有源码,简单说下我的”笨方法“,其实就是通过maven打包插件把所有子项目打包到master下的target目录下,然后build.sh循环target下的jar ,再通过java - jar 命令启动,当然如果你是tomcat 之类的可以通过jenkins的插件自动启动,这个更方便。

 

需要注意的点:

  启动之前检查程序是否已经启动,如果已经启动则先Kill,第一次启动可以把PID存在文件里,下次启动直接读取文件再调用kill命令杀掉程序。

 

如果我还记得的话,下次补上源码,下一章写下最关键的:使用jenkins自动化部署docker。

 

 

2019-1-15  加上sh命令:

export BUILD_ID=dontKillMe 

#指定最后编译好的jar存放的位置 
www_path=/home/compent

#jar位置
jar_path=$WORKSPACE/target

#进入指定的编译好的jar的位置
cd ${jar_path} 

#遍历target文件夹
for file in ./* 
do 

#只要jar文件 
if [ "${file##*.}"x = "jar"x ];then 

#Jenkins中编译好的jar名称 
jar_name=$file 

#获取运行编译好的进程ID,便于我们在重新部署项目的时候先杀掉以前的进程
pid=$(cat ${www_path}/${jar_name}.pid) 

#先删除同名文件
rm -f ${www_path}/${jar_name}
#将编译好的jar复制到最后指定的位置 
cp ${jar_path}/${jar_name} ${www_path}

#进入最后指定存放jar的位置 
cd ${www_path} 

#杀掉以前可能启动的项目进程 
kill -9 ${pid} 

#启动jar,指定SpringBoot的profiles为test,并后台启动 
nohup java -jar -Dspring.profiles.active=test ${www_path}/${jar_name} > ${jar_name%-*.*.*-SNAPSHOT.jar}.out 2>&1 & 

#将进程ID存入到ufind-web.pid文件中 
echo $! > /home/compent/${jar_name}.pid 

fi 
done

 

希望能帮到有需要的人。

 

你可能感兴趣的:(自动化部署)