全程只讲你需要手动点击、填写、配置 的操作,分两大阶段:一次性全局配置(管理员只做1次) 、项目任务配置(每个Java项目配1次) 、日常发布(每次部署只点1个按钮)。
前置说明
架构:
- Jenkins服务器:负责拉代码、Maven打包生成jar
- 远程业务服务器:接收jar、停止旧服务、启动新jar
核心插件:Publish Over SSH(远程传文件+执行shell)、Maven Integration、Git Plugin
第一阶段:一次性全局配置(管理员操作,仅初次搭建做)
步骤1:点击安装必备插件

- 左侧菜单点击【系统管理】→【插件管理】
- 切换到【可用插件】,搜索3个插件并勾选:
- Maven Integration plugin
- Publish Over SSH
- Git Plugin
- 页面底部点击【安装 without restart】,等待全部安装成功
- 安装完成点击【返回首页】
步骤2:全局配置远程服务器SSH连接(关键)


- 左侧【系统管理】→【系统配置】,下拉页面找到
Publish over SSH模块 - 找到【SSH Servers】→ 点击【Add】新增远程服务器信息,逐项填写:
- Name:自定义名称(如
prod-app-server,后面项目要选这个) - Hostname:远程服务器IP地址
- Username:远程服务器登录账号(root/app)
- Remote Directory:远程接收jar的根目录,填
/opt/app(远程机器要提前建好这个文件夹)
- Name:自定义名称(如
- 点【Advanced】展开登录验证:
- 勾选
Use password authentication,输入远程服务器密码
- 勾选
- 右下角点击【Test Configuration】,出现
Success代表连通成功 - 页面最底部点击【保存】,全局配置完成
第二阶段:新建/配置Java项目任务(每个项目配置1次)
步骤1:新建自由风格项目

- Jenkins首页左侧点击【新建任务】
- 输入任务名称 → 选择【构建一个自由风格的软件项目】→ 点击【确定】进入项目配置页
步骤2:源码管理(拉Git代码)

- 下滑到【源码管理】,选择
Git - Repository URL:填项目Git地址(gitee/gitlab/github)
- Credentials:点击【添加】输入Git账号密码/密钥,选中凭证
- Branches to build:填要打包的分支,如
*/master - 无需保存,继续往下配置
步骤3:构建步骤(Maven打包生成jar)

- 找到【构建】模块 → 点击【增加构建步骤】→ 选择【调用顶层Maven目标】
- Goals 输入打包命令:
bash
clean package -DskipTests
- 保存构建步骤,继续下滑
步骤4:构建后操作(上传jar到远程+启动服务,核心部署步骤)


- 找到【构建后操作】→ 点击【增加构建后操作步骤】
- 下拉选择:
Send files or execute commands over SSH - SSH Server:下拉选中第一阶段配置好的远程服务器名称(prod-app-server)
- 点击【Advanced】展开文件传输配置,填写3个核心参数:
- Source files:
target/*.jar(Jenkins本地打包生成的jar路径) - Remove prefix:
target(上传时自动去掉target文件夹,远程直接放jar) - Remote directory:
/opt/app(和全局配置的远程目录一致)
- Source files:
- Exec command(远程服务器执行启停脚本,直接复制):
shell
# 1. 杀掉旧java进程
PID=$(ps -ef | grep java -jar /opt/app/*.jar | grep -v grep | awk '{print $2}')
if [ -n "$PID" ];then kill -9 $PID;fi
# 2. 后台启动新jar,输出日志
nohup java -jar /opt/app/*.jar --spring.profiles.active=prod > /opt/app/app.log 2>&1 &
sleep 3
# 健康检测(可选,验证启动)
curl http://127.0.0.1:8080/actuator/health
- 页面最底部点击【保存】,项目一次性配置全部完成
第三阶段:日常发布(每次更新代码只需要点1个按钮)


- Jenkins首页点击你的项目名称,进入项目详情页
- 页面左侧直接点击【Build Now】(仅这一步手动点击)
- 自动执行全流程,无需任何手动操作:
- Jenkins拉取Git最新代码
- Maven执行打包,生成target/*.jar
- SSH上传jar到远程
/opt/app - 远程执行脚本:停旧服务→启动新jar
- 查看日志:点击构建记录#1/#2 → 【控制台输出】,看是否部署成功
区分:哪些是一次性配置、哪些是每次发布要操作
1. 只做1次(搭环境时)
- 插件安装
- 系统配置SSH远程服务器
2. 每个新项目做1次(新增服务时)
- 新建任务、配置Git源码
- 配置Maven打包步骤
- 配置SSH上传+远程启动脚本
3. 每次迭代发布(日常操作)
- 仅点击项目内【Build Now】
补充时序图(对应点击操作流程)
远程业务服务器 Jenkins服务端 JenkinsWeb页面 运维/开发人员 远程业务服务器 Jenkins服务端 JenkinsWeb页面 运维/开发人员 #mermaid-svg-78aP9eJmxHO3Wt4j{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-78aP9eJmxHO3Wt4j .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-78aP9eJmxHO3Wt4j .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-78aP9eJmxHO3Wt4j .error-icon{fill:#552222;}#mermaid-svg-78aP9eJmxHO3Wt4j .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-78aP9eJmxHO3Wt4j .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-78aP9eJmxHO3Wt4j .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-78aP9eJmxHO3Wt4j .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-78aP9eJmxHO3Wt4j .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-78aP9eJmxHO3Wt4j .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-78aP9eJmxHO3Wt4j .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-78aP9eJmxHO3Wt4j .marker{fill:#333333;stroke:#333333;}#mermaid-svg-78aP9eJmxHO3Wt4j .marker.cross{stroke:#333333;}#mermaid-svg-78aP9eJmxHO3Wt4j svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-78aP9eJmxHO3Wt4j p{margin:0;}#mermaid-svg-78aP9eJmxHO3Wt4j .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-78aP9eJmxHO3Wt4j text.actor>tspan{fill:black;stroke:none;}#mermaid-svg-78aP9eJmxHO3Wt4j .actor-line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-78aP9eJmxHO3Wt4j .innerArc{stroke-width:1.5;stroke-dasharray:none;}#mermaid-svg-78aP9eJmxHO3Wt4j .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-78aP9eJmxHO3Wt4j .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-78aP9eJmxHO3Wt4j #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-78aP9eJmxHO3Wt4j .sequenceNumber{fill:white;}#mermaid-svg-78aP9eJmxHO3Wt4j #sequencenumber{fill:#333;}#mermaid-svg-78aP9eJmxHO3Wt4j #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-78aP9eJmxHO3Wt4j .messageText{fill:#333;stroke:none;}#mermaid-svg-78aP9eJmxHO3Wt4j .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-78aP9eJmxHO3Wt4j .labelText,#mermaid-svg-78aP9eJmxHO3Wt4j .labelText>tspan{fill:black;stroke:none;}#mermaid-svg-78aP9eJmxHO3Wt4j .loopText,#mermaid-svg-78aP9eJmxHO3Wt4j .loopText>tspan{fill:black;stroke:none;}#mermaid-svg-78aP9eJmxHO3Wt4j .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-78aP9eJmxHO3Wt4j .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-78aP9eJmxHO3Wt4j .noteText,#mermaid-svg-78aP9eJmxHO3Wt4j .noteText>tspan{fill:black;stroke:none;}#mermaid-svg-78aP9eJmxHO3Wt4j .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-78aP9eJmxHO3Wt4j .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-78aP9eJmxHO3Wt4j .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-78aP9eJmxHO3Wt4j .actorPopupMenu{position:absolute;}#mermaid-svg-78aP9eJmxHO3Wt4j .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-78aP9eJmxHO3Wt4j .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-78aP9eJmxHO3Wt4j .actor-man circle,#mermaid-svg-78aP9eJmxHO3Wt4j line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-78aP9eJmxHO3Wt4j :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 一次性配置操作 日常发布操作 点击系统管理→插件管理安装SSH/Maven插件系统配置→Publish Over SSH添加远程服务器IP密码新建任务,配置Git、Maven打包、SSH部署脚本并保存进入项目,点击【Build Now】按钮触发构建任务git拉取代码 + mvn打包生成jarSSH上传target/*.jar至/opt/app执行shell脚本 停旧进程、启动新jar返回启动日志/健康检测结果构建完成,展示控制台输出日志页面显示构建成功/失败状态
常见点击排错操作
- 部署失败:点击对应构建号 → 【控制台输出】查看报错
- SSH连不上远程服务器:回到系统配置,点【Test Configuration】重测连通性
- Jar找不到:检查构建步骤Maven命令是否正确,查看控制台打包日志
- 远程启动失败:登录远程服务器手动执行Exec command里的脚本测试