本文的前后端分离项目,技术框架是:
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代码(有图详解)
登录Jenkins,在上篇文章中讲过
在腾讯云服务器OpenCLoudOS系统中安装Jenkins(有图详解)
自己服务器的IP+端口
maven配置如下:
在腾讯云服务器OpenCLoudOS系统中安装maven(有图详解)
JDK配置如下:
上文中的路径,就是服务器中jdk的安装路径,文章在腾讯云服务器OpenCLoudOS系统中安装jdk(有图详解)中有讲过
也可以 echo $JAVA_HOME找出
maven地址配置:
Public over SSH: jenkins远程服务器发送文件,此插件作用是将svn上的代码自动打包部署到其他服务器上去
配置Publish Over SSH
备注:
这里的Remote Directory也可以不写,为空。因为新建的项目中也有配置jar上传的路径
不然两个地方到时候都配置了,maven打包生成的jar放置的路径就会叠加
每次安装完插件,可能不会生效,所以需要重启Jenkins
具体重启方法和重启路径请看这篇文章:
在腾讯云服务器OpenCLoudOS系统中安装Jenkins(有图详解)
cd /etc/init.d
./jenkins stop
./jenkins start
增加构建步骤:
Source files:源文件。就是maven打包后生成的哪个文件要打包到目标服务器
Remove prefix:移除前缀。因为maven打包后,会有几层文件夹,我们只需要把要部署的jar之前的文件夹都删除即可
Remote directory:远程文件夹。maven打包后形成的jar要部署到哪个路径下
Exec command:部署包jar文件到了目标路径下后,需要启动的shell脚本
参考:
对于maven有多个子工程的,本地maven打包后,形成的jar文件是这个:
fabricate-admin.jar
这个jar就是我们要部署到目标服务器并要启动文件fabricate.sh启动的jar
chmod -R 777 /usr/local/nginx/fabricate/
这里赋权两个作用:
启动文件如下:
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
保存:
点击构建:
如果构建失败,可以从控制台日志看错误信息,以下三个步骤也可排查:
自动化部署有三步:
一般默认的工作空是**/var/lib/jenkins/workspace**
在这个路径下看自己的代码是否通过svn下载到了工作空间
代码路径下是否经过了maven打包形成target文件夹,产生部署包jar
可观察上一步产生的jar,有没有推过来
这个就是你配置的推送SSH的jar部署路径
只需观察上文启动脚本中的输出日志文件是否实时生成: