Jenkins部署后端springboot微服务项目

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

相关推荐
jufeng13077 分钟前
【系列:TDengine 工业物联网实战:从零搭起可运行系统 · 第 8 篇】
java·spring boot·时序数据库·tdengine
SQL-First布道者7 小时前
持久层框架的评价标准:只有一个
java·spring boot·spring·tomcat·mybatis·spring jdbc
m0_587383007 小时前
智慧场馆解决方案实战指南:从系统架构到落地部署全解析
java·spring boot·架构·系统架构
智码看视界8 小时前
Day53-Docker:Dockerfile最佳实践 + 多阶段构建 + docker-compose编排
java·spring boot·docker·docker-compose·dockerfile·容器化部署·多阶段构建
凤山老林9 小时前
从 RestTemplate 到 HttpClient 5:Spring Boot HTTP 客户端性能调优与连接池治理
spring boot·后端·http
晚染烟10 小时前
每日八股day27
spring boot
边境悍匪10 小时前
蜗牛学苑 Java 智能体学习 Day24|SpringBoot 整合 MyBatis、分层解耦思维导图复盘
java·数据库·spring boot·学习·mybatis
lisanmengmeng11 小时前
搭建elk环境并接入frostmourne,实现监控报警效果(一)
运维·elk·jenkins
【赫兹威客】浩哥11 小时前
基于SpringBoot+Vue3的企业办公自动化OA系统|集成Activiti工作流引擎
spring boot·后端·课程设计
星期一研究室11 小时前
AI 生成一堆素材后,怎么整理成好找又好用的视觉资产库?
微服务·产品·设计