如何从Jenkins将Spring Boot应用Jar包部署至另一EC2 Ubuntu实例
实现Jenkins构建后将Jar包部署到另一台EC2 Ubuntu实例的极简流程
前提准备
- 两台EC2实例安全组配置:允许Jenkins实例访问目标实例的22端口(SSH),目标实例开放Spring Boot应用的服务端口(如8080)
- 目标EC2实例提前安装依赖环境:
# 安装OpenJDK 17和Maven(可根据项目需求调整Java版本) sudo apt update && sudo apt install openjdk-17-jdk maven -y
步骤1:配置Jenkins实例到目标EC2的SSH免密登录
- 在Jenkins实例终端生成SSH密钥对(一路回车使用默认配置):
ssh-keygen -t rsa - 将公钥复制到目标EC2实例,替换
<目标EC2_IP>为实例的公网/私有IP:ssh-copy-id ubuntu@<目标EC2_IP> - 测试免密登录,能直接进入目标实例终端即配置成功:
ssh ubuntu@<目标EC2_IP>
步骤2:配置Jenkins项目实现构建与部署
- 新建Freestyle项目,进入配置页面
- 源码管理:根据代码仓库类型配置(如Git,填写仓库地址和访问凭据)
- 构建步骤:添加「Execute shell」,执行Maven构建命令生成Jar包:
# 跳过测试环节加快构建速度,可根据项目需求移除-DskipTests mvn clean package -DskipTests - 构建后操作:添加「Execute shell」,编写复制Jar包并启动应用的脚本(替换占位符为实际信息):
提示:若不想依赖Maven,可将启动命令替换为# 提前在目标实例创建应用存放目录 ssh ubuntu@<目标EC2_IP> "mkdir -p /opt/app" # 复制构建好的Jar包到目标实例指定目录 scp target/your-app.jar ubuntu@<目标EC2_IP>:/opt/app/ # 远程执行应用启动逻辑(先终止旧进程再后台启动) ssh ubuntu@<目标EC2_IP> << EOF # 查找并终止旧的应用进程(无进程时忽略错误) pkill -f your-app.jar || true # 后台启动应用,日志输出到指定文件 nohup mvn spring-boot:run -Dspring-boot.run.jvmArguments="-jar /opt/app/your-app.jar" > /opt/app/app.log 2>&1 & EOFnohup java -jar /opt/app/your-app.jar > /opt/app/app.log 2>&1 &,此时目标实例仅需安装Java环境
验证部署
- 触发Jenkins构建,完成后可通过以下命令查看目标实例的应用启动日志:
ssh ubuntu@<目标EC2_IP> "tail -f /opt/app/app.log" - 访问目标EC2实例的公网IP+应用端口,确认服务正常启动
内容的提问来源于stack exchange,提问作者Sri Ganesh Sharma
相关产品推荐
相关产品推荐

