jenkins+maven+svn实现springboot项目的自动化部署过程

前言
     在安装之前,我想说明一下本文的目的,jenkins的一款持续集成工具,
     它可以做的事情很多,其中一个主要的功能就是简化部署流程
   
     回想一下我们的发布流程:
          1.本地把项目打包
          2.通过FTP等工具,传输到服务器
          3.然后到项目根目录下执行可运行jar, java -jar xxxxxx.jar

     如果每次都这么搞的话,不仅慢,而且容易出错。
   
     有了jenkins以后,发布流程可以是这样:
          1.用户在jenkins上点击某个按钮进行发布
          2.jenkins收到发布命令
          3.jenkins从SVN上把源代码download下来
          4.jenkins根据你设置的mvn命令进行打包
          5.jenkins把你打包的好的可执行jar工程通过SSHserver传输到服务器工作目录下
          6.自动执行shell脚本启动项目
 
     对于程序员而言,只要做两件事:
          1.在jenkins上配置某个项目的部署流程
          2.在jenkins上点击某个项目的部署按钮,进行一键部署
     
     实际上,配置往往只做一次,其余的时候,你只要一键部署就可以了

第一步,搭建svn资源服务器,可以参考我的另一篇博客

linux下搭建SVN服务器

第二步, 搭建jenkins环境,可以参考我的另一篇博客

centos7下jenkins安装

第三步,jenkins安装插件

     1 , 安装maven插件

    

2 , 安装svn插件

  

3 , 安装deploy插件

deploy插件安装完成后,会在项目构建配置中出现Send build artifacts over SSH 选项

第四步, 配置jdk,maven,publish SSH server

 1 , publish SSH server , passphrase 为密码授权

    

2, jdk and  maven 

这里在配置maven本地仓库的时候, 可能会遇到无法从远程仓库下载jar包到本地仓库,研究了半天发现是jenkins根据maven配置文件去下载jar包的时候需要在服务器上建立文件目录.  但是jenkins默认的用户并没有权限在linux建立目录, 解决方法把jenkins的用户设置为linux的root用户,就可以成功建立本地仓库了.

 vi  /etc/sysconfig/jenkins   可以配置jenkins的用户和端口  

第五步 , 设置项目构建,按截图顺序设置

构建后操作, 如果打的是pom文件, 则exec command为

echo "======$JOB_NAME"
echo "======$JOB_BASE_NAME"
echo "======$NODE_NAME"

如果打的是可运行jar包,则exec command 为:

BUILD_ID=DONTKILLME
source /etc/profile
PJ_DIR=mgt-franchise
FILE_NAME=`ls /work/update/$PJ_DIR -t | awk '{print $1}' | head -1`

echo "--find filename: $FILE_NAME"
CURR_DATE=`date "+%Y%m%d%H%M%S"`
cd  /work/services/
tar -zcf /work/backup/$PJ_DIR/$CURR_DATE.gz $PJ_DIR*/*
rm -rf /work/services/$PJ_DIR*
tar -zxf /work/update/$PJ_DIR/$FILE_NAME -C /work/services
APP_DIR=/work/services/${FILE_NAME%-*}
echo "--app dir: $APP_DIR"
$APP_DIR/bin/restart.sh test

到此,jenkins一键自动化部署的过程就结束了,自动部署的时候需要一定的shell脚本编写能力,以后有时间再慢慢研究...  

linux consul安装和启动

unzip consul_0.6.4_darwin_amd64.zip

sudo scp consul /usr/local/bin

consul agent -client -dev 

consul members 

最后,记一次我在用springcloud+consul做分布式服务遇到的一个问题, 我们的项目是用consul来做分布式服务注册和治理的,所以项目启动的时候需要连接consul服务 , 我开始是用server的方式启动consul

 consul agent -server -bootstrap -advertise 127.0.0.1 -data-dir ./data -client 192.168.1.142 -ui

-client参数设置客户端应用连接consul服务的地址,但consul肯定是以服务器模式启动的

猜你喜欢

转载自blog.csdn.net/wuruijie321/article/details/84134763