如果是微服务版,可能会涉及到common等基础模块包的引用,需要maven私服的情况,先把common的打包放入 maven私服,然后去引用
安装参考另一个文章:window 安装 jenkins 编写脚本_jenkins window 脚本-优快云博客
配置maven 和 jdk 和 git
注意jdk的安装目录,是jenkins 安装所在服务器的jdk目录
注意maven的目录 是jenkins 安装所在服务器的maven目录
注意git的目录 是jenkins 安装所在服务器的 git 目录
安装 Publish Over SSH 插件
配置远程服务器
创建项目
创建maven项目
开始配置
General 默认不用修改
源码管理
注意
构建触发器
构建环境
Pre Steps 构建之前
选择 Send files or execute commands over SSH
目标服务器 Root根目录 创建 x.sh 文件
文件内容 将 111111111111111111 写到 xxx.txt文件里面
#!/bin/bash
echo "111111111111111111">xxx.txt
测试 手动运行 x.sh
创建 xxx.txt文件 并将 111111111111111111 写入到里面
测试完后 删除xxx.txt
打包之前没有 xxx.txt 文件
编辑 x.sh文件 ,并添加脚本内容
#!/bin/bash
#删除历史数据
rm -rf homeappname=$1
#获取传入的参数
echo "arg:$1"
#获取正在运行的jar包pid
pid=`ps -ef | grep $1 | grep 'java -jar' | awk '{printf $2}'`echo $pid
#如果pid为空,提示一下,否则,执行kill命令
if [ -z $pid ];
#使用-z 做空值判断
then
echo "$appname not started"else
kill -9 $pid
echo "$appname stoping...."check=`ps -ef | grep -w $pid | grep java`
if [ -z $check ];then
echo "$appname pid:$pid is stop"
else
echo "$appname stop failed"fi
fi
执行 demo 传入的参数,就是用脚本里面的 appname 接受的
执行命令 nohup java -jar /root/home/java/app/ruoyi-admin.jar >mylog.log 2>&1 &
启动后打印日志写入到 mylog.log 这个文件 可以到这个文件去日志
把脚本 ./x.sh ruoyi-admin 配置到 启动前 Pre Steps
Build 开始构建
选择 Send files or execute commands over SSH
是项目名称 去前缀 ruoyi-web
例如:
clean package -Dmaven.test.skip=true
Post Steps 构建后 发布步骤
Send files or execute commands over SSH 需要安装插件才会现在,不安装不显示此选项
示例一:
示例二:
添加 执行 shell
添加脚本
脚本内容
#!/bin/bash
# 定义变量
JAR_PATH="/home/java/app/xiaobing-auth.jar"
JAR_SOURCE="/var/lib/jenkins/workspace/auth-test/auth/target/xiaobing-auth.jar"
LOG_FILE="/home/java/app/logs/auth.log"
PID_FILE="/home/java/app/pid/auth.pid"
# 删除旧的 JAR 文件
if [ -f "$JAR_PATH" ]; then
echo "Removing old JAR file..."
rm -f "$JAR_PATH" || { echo "Failed to remove old JAR file"; exit 1; }
else
echo "No old JAR file found, skipping removal."
fi
# 移动新的 JAR 文件
echo "Copying new JAR file..."
cp -f "$JAR_SOURCE" "$JAR_PATH" || { echo "Failed to copy new JAR file"; exit 1; }
# 进入指定目录
cd /home/java/app/ || { echo "Failed to change directory"; exit 1; }
# 阻止 Jenkins 杀死项目进程
export BUILD_ID=dontKillMe
# 停止旧进程(如果有 PID 文件)
if [ -f "$PID_FILE" ]; then
OLD_PID=$(cat "$PID_FILE")
if ps -p "$OLD_PID" > /dev/null; then
echo "Stopping old process with PID $OLD_PID..."
kill "$OLD_PID" || { echo "Failed to stop old process"; exit 1; }
rm "$PID_FILE" || { echo "Failed to remove PID file"; exit 1; }
else
echo "Old process with PID $OLD_PID not found."
fi
else
echo "No PID file found, skipping old process stop."
fi
# 启动新进程
echo "Starting new process..."
nohup java -jar xiaobing-auth.jar >"$LOG_FILE" 2>&1 &
NEW_PID=$!
echo "$NEW_PID" > "$PID_FILE"
echo "New process started with PID $NEW_PID."
执行 shell 脚本 和 构建后类似,二选择一也行,组合后配合使用也行
构建后操作
选择 Send build artifacts over SSH
vi start.sh 脚本内容
nohup /usr/java/jdk1.8.0_162/bin/java -jar /root/home/java/app/ruoyi-admin.jar >mylog.log 2>&1 &
注意分配权限 chmod 777 start.sh
开始构建
查看控制台
构建成功并推送远程服务器
远程服务器的jar包
查看日志 cat mylog.log 启动成功
访问获取验证码的接口进行测试是否成功
http://192.168.43.202:9090/captchaImage