Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解

1. 准备工作

本文的前后端分离项目,技术框架是:
Springboot + Vue + Maven + SVN + Redis + Mysql + Nginx + JDK
所以首先需要安装以下:

在腾讯云服务器OpenCLoudOS系统中安装jdk(有图详解)

在腾讯云服务器OpenCLoudOS系统中安装mysql(有图详解)

在腾讯云服务器OpenCLoudOS系统中安装nginx(有图详解)

在腾讯云服务器OpenCLoudOS系统中安装redis(有图详解)

在腾讯云服务器OpenCLoudOS系统中安装svn(有图详解)

在腾讯云服务器OpenCLoudOS系统中安装maven(有图详解)

在腾讯云服务器OpenCLoudOS系统中安装Jenkins(有图详解)

用svn上传前后端代码参考:

用svn上传idea和webstorm代码(有图详解)

2. 全局工具配置

登录Jenkins,在上篇文章中讲过

在腾讯云服务器OpenCLoudOS系统中安装Jenkins(有图详解)

自己服务器的IP+端口

Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第1张图片

Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第2张图片

maven配置如下:

Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第3张图片
文中画框的地方,就是上篇文章中的maven安装地址

在腾讯云服务器OpenCLoudOS系统中安装maven(有图详解)

JDK配置如下:

Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第4张图片
上文中的路径,就是服务器中jdk的安装路径,文章在腾讯云服务器OpenCLoudOS系统中安装jdk(有图详解)中有讲过

也可以 echo $JAVA_HOME找出

Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第5张图片

maven地址配置:

Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第6张图片

3. 插件安装

Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第7张图片
安装Public over SSH

Public over SSH: jenkins远程服务器发送文件,此插件作用是将svn上的代码自动打包部署到其他服务器上去

Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第8张图片
Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第9张图片

配置Publish Over SSH

Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第10张图片
拉到最底下,新增

Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第11张图片
Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第12张图片

备注:
这里的Remote Directory也可以不写,为空。因为新建的项目中也有配置jar上传的路径

不然两个地方到时候都配置了,maven打包生成的jar放置的路径就会叠加

配置目标主机密码并测试连接:
Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第13张图片
点击运用、保存
Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第14张图片
安装SVN:

Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第15张图片
Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第16张图片

每次安装完插件,可能不会生效,所以需要重启Jenkins

具体重启方法和重启路径请看这篇文章:
在腾讯云服务器OpenCLoudOS系统中安装Jenkins(有图详解)

cd /etc/init.d

./jenkins stop

./jenkins start

4. 部署SpringBoot后端项目

Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第17张图片

Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第18张图片
Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第19张图片
Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第20张图片
选择你刚刚添加的svn用户:

Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第21张图片

增加构建步骤:

Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第22张图片
Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第23张图片
Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第24张图片

增加构建后操作步骤:
Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第25张图片
Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第26张图片

Source files:源文件。就是maven打包后生成的哪个文件要打包到目标服务器

Remove prefix:移除前缀。因为maven打包后,会有几层文件夹,我们只需要把要部署的jar之前的文件夹都删除即可

Remote directory:远程文件夹。maven打包后形成的jar要部署到哪个路径下

Exec command:部署包jar文件到了目标路径下后,需要启动的shell脚本

参考:
对于maven有多个子工程的,本地maven打包后,形成的jar文件是这个:

Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第27张图片
fabricate-admin.jar
这个jar就是我们要部署到目标服务器并要启动文件fabricate.sh启动的jar
Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第28张图片

把jar启动文件上传至该路径下:
Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第29张图片
给文件夹赋权:

chmod -R 777 /usr/local/nginx/fabricate/

这里赋权两个作用:

  1. 给文件夹赋权,自动化部署时,生成的jar文件可以通过SSH传输到这边,不赋权读写权限的话,到时候写不进来
  2. 给fabricate.sh赋予启动权限,jar文件传输过来,可以启动这shell脚本
    在这里插入图片描述

启动文件如下:

export JAVA_HOME PATH CLASSPATH
JAVA_HOME=/app/soft/jdk/jdk1.8.0_341 #你自己的jdk路径
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
APP_HOME=`pwd`
AppName=fabricate-admin.jar  #你自己的部署包jar的名字
echo "  =====关闭Java应用======"
PROCESS=`ps -ef |grep java |grep -v grep|grep $APP_HOME/$AppName|awk '{print $2}'`
for i in $PROCESS
do
  echo "Kill the $1 process [ $i ]"
  kill -9 $i
done
echo "  =====启动Java应用======"
nohup JAVA_HOME/bin/java -jar $APP_HOME/$AppName  > $APP_HOME/$AppName.log 2>&1 & 
echo $! > savePid.txt
cat savePid.txt
rm  savePid.txt

保存:

Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第30张图片

点击构建:

Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第31张图片
可看控制台日志:

Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第32张图片
Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第33张图片

如果构建失败,可以从控制台日志看错误信息,以下三个步骤也可排查:

自动化部署有三步:

1. svn下载代码到workspace,并用maven打包形成target文件夹,底下有项目部署包jar

一般默认的工作空是**/var/lib/jenkins/workspace**

在这个路径下看自己的代码是否通过svn下载到了工作空间
在这里插入图片描述
代码路径下是否经过了maven打包形成target文件夹,产生部署包jar

2. 推送jar到目标路径

可观察上一步产生的jar,有没有推过来
Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第34张图片
这个就是你配置的推送SSH的jar部署路径
Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第35张图片

3. 启动shell脚本

只需观察上文启动脚本中的输出日志文件是否实时生成:

Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第36张图片
out.log日志文件生成
Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解_第37张图片

5. 部署vue前端项目

你可能感兴趣的:(jenkins,自动化,svn,spring,boot,vue,maven)