Jenkins系列四通过脚本方式部署maven项目,maven聚合项目,VUE的springboot项目
Jenkins系列一Linux环境安装Jenkins
Jenkins系列二通过Deploy方式部署maven项目,maven聚合项目到Tomcat
Jenkins系列三通过脚本方式部署maven项目,maven聚合项目到Tomcat
Jenkins系列四通过脚本方式部署maven项目,maven聚合项目,前端VUE的springboot项目
环境
- Linux版本:CentOS7.2
- JDK版本:1.8
- Maven版本:3.6.0
- Jenkins版本:2.270
- npm版本:6.14.8
- springboot项目:总目录demo;前端目录demo/ui;后端目录:demo/demo-web
- jenkins创建的Item:springboot-demo
- Jenkins的workspace目录:/opt/jenkins-workspace
- jenkins重启springboot-demo.jar的脚本目录:/opt/bin/jenkins-restart-springboot-demo.sh
Jenkins
安装额外插件
登陆到Jenkins后,菜单依次【Manager Jenkins】【Manager Plugins】【可选插件】输入下面的插件下载并安装,重启。(根据自己所需功能选择插件)
- Subversion(SVN)
- Maven Integration(maven)
配置环境
登陆到Jenkins后,菜单依次【Manager Jenkins】【Global tool Configuration】配置如下环境
- 【Maven配置】的【默认 settings 提供】【默认全局 settings 提供】,配置maven的setting.xml文件
- 【JDK】的【别名】【JAVA_HOME】
- 【Maven】的【Name】【MAVEN_HOME】
配置Item
-
新建Item
-
输入任务名称,选择【构建一个maven项目】,确定
-
【General】根据需要填写
-
【源码管理】根据实际选择Git、Subversion。添加凭证并选择。如果是聚合项目,这里选择父项目地址
-
【构建触发器】【构建环境】
-
【Pre Steps】无
-
【Build】清除缓存,重新打包,并忽略测试类
clean package -Dmaven.test.skip=true
-
【Post Steps】
sh /opt/bin/jenkins-restart-springboot-demo.sh #{JOB_NAME}
jenkins-restart-springboot-demo.sh
#!/bin/bash
export BUILD_ID=dontKillMe
echo "restart..."
ALIAS=$1
if [ -n "$ALIAS" ]
then
echo "ALIAS:" $ALIAS
else
ALIAS=springboot-demo
echo "use default ALIAS:" $ALIAS
fi
JAR_NAME=demo.jar
echo "JAR_NAME:" $JAR_NAME
pid=`ps -ef | grep java | grep $JAR_NAME | awk '{print $2}'`
if [ -n "$pid" ]
then
kill -9 $pid
echo "kill pid" $pid
else
echo "pid is null"
fi
rm -rf /opt/jar/$JAR_NAME
echo "delete old codes finish..."
cp /opt/jenkins-workspace/workspace/${ALIAS}/demo-web/target/$JAR_NAME /opt/jar
echo "update codes finish..."
sleep 2s
nohup java -jar /opt/jar$JAR_NAME &
编译vue代码,这里使用了vue本身的打包功能,所以只需执行命令。如果需要脚本打包,把编译后的文件复制到指定目录即可
cd /opt/jenkins-workspace/workspace/springboot-demo/demo-ui
cnpm i
npm run deploy
- 【构建设置】 无
构建项目
选择列表最后的菜单构建项目,构建状态在左下角,可以点击【控制台输出】查看日志
总结
关于目录一定要弄清楚这几个概念,不然配置路径时候很容易弄混
- Jenkins工作空间workspace:在/etc/profile中配置
- Jenkins中的项目名,也叫jobName:Jenkins中创建项目时候的名称
- 代码库的项目名:svn/git上的项目名称
- 如果是聚合项目还有子模块
- Jenkins从代码库下载的目录:
工
作
空
间
/
{工作空间}/
工作空间/{jobName}/
项
目
名
称
/
{项目名称}/
项目名称/{子模块};在配置上面的pmo.xml、xxx.war
包等路径时根据实际情况参考配置