You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从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项目实现构建与部署

  1. 新建Freestyle项目,进入配置页面
  2. 源码管理:根据代码仓库类型配置(如Git,填写仓库地址和访问凭据)
  3. 构建步骤:添加「Execute shell」,执行Maven构建命令生成Jar包:
    # 跳过测试环节加快构建速度,可根据项目需求移除-DskipTests
    mvn clean package -DskipTests
    
  4. 构建后操作:添加「Execute shell」,编写复制Jar包并启动应用的脚本(替换占位符为实际信息):
    # 提前在目标实例创建应用存放目录
    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 &
    EOF
    
    提示:若不想依赖Maven,可将启动命令替换为nohup 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 20:06:22