jenkins + git + maven 构建java 和 vue代码

1.下载jenkins插件
GitLab Plugin
JaCoCo Plugin
Maven integration plugin
SSH Plugin
HTML Publisher plugin
Performance Plugin

2.安装完成后重启jenkins
http://jenkins地址/restart

3.全局配置 配置jdk maven git

jenkins + git + maven 构建java 和 vue代码_第1张图片

jenkins + git + maven 构建java 和 vue代码_第2张图片

4.构建一个Maven项目
jenkins + git + maven 构建java 和 vue代码_第3张图片

6.填写pom.xml文件
如果是多模块项目 需要填写最外层的pom.xml
pom.xml的目录在jenkins工作目录下
我这里是:/var/lib/jenkins/workspace/
目录下的代码结构和git或者你本地一直 复制路径填写即可
image.png

7.编写shell
这里根据自己的情况选择 我选择了 执行shell
jenkins + git + maven 构建java 和 vue代码_第4张图片

脚本以供参考
export BUILD_ID=dontKillMe 这句话一定要加 不然进程会被杀掉

#!/bin/bash  
#copy file and restart tomcat

export BUILD_ID=dontKillMe
tomcat_path=/disk4/java/liver_pro/dev
war_name=starter-1.0.0.jar
# job-name 就是你的 jenkins 任务名
file_path=/var/lib/jenkins/workspace/live-server/live-boot/starter/target/
war_path=/disk4/java/liver_pro/dev/

now=$(date +"%Y%m%d%H%M%S")  
echo "the shell execute time is ${now}"

# 获取 tomcat_path 下 tomcat 进程 PID

chmod 777 ${tomcat_path}/starter-1.0.0.jar 
  
echo "lsof -n -P -t ${tomcat_path}/${war_name}"  
tomcat_pid=$(cat /disk4/java/liver_pro/dev/liver_pro.pid)
echo "the tomcat_pid is ${tomcat_pid}"

# 杀死当前 tomcat 进程
if [ "${tomcat_pid}" != "" ]; then  
   kill -9 ${tomcat_pid}
   echo "kill -9 ${tomcat_pid}"
   echo "kill the server, PID:${tomcat_pid}"
fi 

# jar包改名 war_name
cd ${tomcat_path}
echo "rename ${war_name}"  
rename ${war_name} ${war_name}${now} ${war_name}

# 覆盖 war 包到 `/opt/war/${war_name}`
echo "cd $file_path"  
cd $file_path    
if [ -f ${war_name} ]; then  
   echo "cp ${war_name} ${war_path}${war_name}"
   cp ${war_name} ${war_path}${war_name}
else  
   echo "${file_path}${war_name} unexists"
fi

# 启动服务
cd ${tomcat_path}
pwd
echo "server restart ${war_name}"
nohup java -jar starter-1.0.0.jar > /tmp/test 2>&1 &
echo $! > /disk4/java/liver_pro/dev/liver_pro.pid
echo "server restarted"  


#cd /home/java/liver_vue
#rename dist dist${now} dist

echo "vue packaging ..."  
cd /var/lib/jenkins/workspace/liver_pro/live-vue
chmod 777 dist
#打包vue文件
npm run build

#强制覆盖到 vue目录下
cp -a dist  /disk4/java/liver_vue


echo "vue end..."  

脚本大概思路:
java部分
查询指定java服务进程 存在即杀死
在运行目录下改名原有jar包 做备份
复制jenkins打包好的jar到运行目录下 启动服务 保存本次进程号

我这vue和java代码在一个分支下 会同时更新代码所以一个构建即可
vue部分:
如果要使用vue打包需要先安装 node 这里不贴教程
打包 覆盖

jenkins 执行npm 时可能出现 npm命令找不到
解决方案:
查看所有环境变量

echo $PATH  

jenkins 进入系统配置 -> 全局属性
jenkins + git + maven 构建java 和 vue代码_第5张图片

jenkins + git + maven 构建java 和 vue代码_第6张图片
把查到的环境变量复制过来 最后加上node的环境变量 使用:分割

jenkins 配置结束

8.git钩子配置
我用的gitea 可能和gitlab 页面不同 大概原理和配置基本相同
进入git中的项目 -> 仓库设置 -> web钩子 -> 添加钩子
目标url为:
jenkins地址/job/构建服务名(jenkins中的)/build?token=root
其中root为第5步中的token令牌
勾选推送事件 我这里是在push tag的时候触发构建
jenkins + git + maven 构建java 和 vue代码_第7张图片

测试推送 如果出现403 在jenkins 安全配置中勾选
jenkins + git + maven 构建java 和 vue代码_第8张图片

完结 ✿✿ヽ(°▽°)ノ✿

你可能感兴趣的:(jenkins,git,自动构建)