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
4.构建一个Maven项目
5.选择git项目 填写项目地址 添加一个拉取代码的账户
5.配置构建触发器(push代码后触发 自动构建)
这里身份令牌写随意写
6.填写pom.xml文件
如果是多模块项目 需要填写最外层的pom.xml
pom.xml的目录在jenkins工作目录下
我这里是:/var/lib/jenkins/workspace/
目录下的代码结构和git或者你本地一直 复制路径填写即可
7.编写shell
这里根据自己的情况选择 我选择了 执行shell
脚本以供参考
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 进入系统配置 -> 全局属性
把查到的环境变量复制过来 最后加上node的环境变量 使用:分割
jenkins 配置结束
8.git钩子配置
我用的gitea 可能和gitlab 页面不同 大概原理和配置基本相同
进入git中的项目 -> 仓库设置 -> web钩子 -> 添加钩子
目标url为:
jenkins地址/job/构建服务名(jenkins中的)/build?token=root
其中root为第5步中的token令牌
勾选推送事件 我这里是在push tag的时候触发构建
测试推送 如果出现403 在jenkins 安全配置中勾选
完结 ✿✿ヽ(°▽°)ノ✿
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。