1.配置全局maven



2.配置全局jdk

3.安装插件

如果jenkins所在的机器就是服务部署机器,可不安装此插件
此插件的作用:
-
通过 SSH 连接到一个或多个远程服务器。
-
将构建产物(文件、目录)传输(发布)到远程服务器。
-
在远程服务器上执行 Shell 命令(例如,部署应用、重启服务)。

4.进行配置ssh信息


5.创建项目 
6.进行配置
选择前面配置的全局jdk版本

7.配置git路径、svn配置方法一样


8.选择maven
clean install -DskipTests

9.配置构建后,把本地jar包上传到服务器上

接着在下面配置jar包上传完之后需要执行的脚本

脚本内容如下:根据实际情况调整目录
把上传的jar包移动到实际部署目录
mv /usr/local/project/package/*.jar /usr/local/project/test.jar
删除上传的jar包
rm -rf /usr/local/project/package/*;
set -e # 遇到错误立即退出
WORK_DIR="/usr/local/project/"
cd $WORK_DIR
APP_NAME="test.jar"
PROFILE="test"
LOG_FILE="$WORK_DIR/test.log"
LOG_BACKUP_DIR="$WORK_DIR/logs/backup"
echo "=== 开始部署 ==="
echo "工作目录: $WORK_DIR"
echo "应用名称: $APP_NAME"
创建日志备份目录
mkdir -p "$LOG_BACKUP_DIR"
备份历史日志文件
if [ -f "$LOG_FILE" ]; then
log_backup_name="pennon-api-toc-test_$(date +%Y%m%d%H%M%S).log.backup"
echo "备份历史日志文件: $log_backup_name"
cp "LOG_FILE" "LOG_BACKUP_DIR/$log_backup_name"
清空当前日志文件,避免新日志追加到旧日志后面
> "$LOG_FILE"
echo "已清空当前日志文件"
fi
备份原有jar文件
if [ -f "$APP_NAME" ]; then
backup_name="APP_NAME.backup.(date +%Y%m%d%H%M%S)"
echo "备份原有jar文件: $backup_name"
cp "APP_NAME" "backup_name"
fi
停止现有服务
echo "停止现有服务..."
PID=(ps -ef \| grep APP_NAME | grep -v grep | awk '{print $2}')
if [ ! -z "$PID" ]; then
echo "停止进程: $PID"
kill $PID
sleep 10
强制杀死如果还在运行
if ps -p $PID > /dev/null 2>&1; then
echo "强制杀死进程: $PID"
kill -9 $PID
sleep 5
fi
fi
等待确保进程已停止
for i in {1..10}; do
if ! ps -ef | grep $APP_NAME | grep -v grep > /dev/null; then
break
fi
sleep 2
done
启动新服务
echo "启动新服务..."
nohup /usr/local/java/jdk-21/bin/java -jar APP_NAME --spring.profiles.active=PROFILE > $LOG_FILE 2>&1 &
echo "启动命令已执行"
快速返回,不等待启动完成
echo "=== 部署指令执行完成 ==="
echo "应用启动中,请查看日志: $LOG_FILE"
echo "历史日志备份位置: $LOG_BACKUP_DIR"
exit 0