使用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

 

希望能帮到有需要的人。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jenkins是一款开源的持续集成工具,它可以帮助开发团队自动化地构建、测试和部署软件项目。在Jenkins中配置Docker插件后,我们可以结合Docker技术来进行自动化部署Docker是一种轻量级的容器化技术,它可以将应用程序和其依赖的环境打包成一个可移植的容器,方便在不同的环境中部署运行。 而Kubernetes(简称K8s)是一个开源的容器编排平台,它可以管理和调度Docker容器集群。通过在K8s中创建Pod、Service等资源对象,我们可以实现Spring Cloud项目的自动化部署。 首先,我们可以使用Jenkins的Pipeline功能来编写自动化部署的流水线脚本。流水线脚本可以定义一系列的步骤,包括构建、测试和部署等。在流水线脚本中,我们可以使用Docker插件来创建Docker镜像,并将其推送到Docker仓库。接着,我们可以使用K8s插件来在Kubernetes集群中创建相关的资源对象,如Deployment和Service等。 在自动化部署过程中,我们可以将Spring Cloud项目的源代码与Dockerfile放在一个Git仓库中,并通过Jenkins的Webhook功能来触发自动化部署流水线。当有新的代码提交时,Jenkins会自动拉取最新的代码,并执行流水线脚本。在流水线脚本中,我们可以使用Maven或Gradle等工具来构建和打包Spring Cloud项目。然后,通过Docker插件创建可运行Docker镜像,并将其推送到Docker仓库。 最后,使用K8s插件在Kubernetes集群中创建相关的资源对象,如Deployment和Service等。通过创建Deployment对象,我们可以定义应用程序的副本数和容器的镜像。通过创建Service对象,我们可以定义应用程序可以访问的网络端口和负载均衡规则。 通过JenkinsDocker和Kubernetes的自动化部署,我们可以实现Spring Cloud项目的快速、可靠和可重复部署。这种自动化部署的方式可以提高开发效率和部署质量,同时也降低了运维成本和风险。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值