Jenkins + Java + Maven + SHH 流水线一键部署
一、前言在日常Java项目开发与迭代过程中传统的手动部署方式一直是很多开发者的痛点。每次项目更新都需要本地打包Maven、上传服务器、停止旧服务、替换包文件、重启服务整套流程繁琐且重复度极高不仅耗费大量时间精力还容易因人为操作失误出现打包失败、文件上传遗漏、服务启动异常等问题严重影响项目迭代效率。为了解决Java项目部署低效、易出错的问题Jenkins自动化流水线部署成为了后端开发、运维必备的核心技能。我们可以通过Jenkins整合Maven项目打包、SSH远程服务器操作搭建一套完整的CI/CD自动化流水线实现代码提交后一键拉取代码、自动打包、远程部署、自动重启服务的全流程自动化。本文将从零开始手把手带大家搭建Jenkins Java Maven SSH完整部署流水线涵盖环境配置、工具安装、任务构建、流水线脚本编写、远程部署调试等全流程内容无多余废话全部是实战落地干货新手也能快速上手彻底告别手动部署的繁琐操作二、前置环境VM 虚机Ubuntu 25 可使用清华镜像下载 Index of /ubuntu-releases/25.10/ | 清华大学开源软件镜像站 | Tsinghua Open Source MirrorJava JDK 21、JDK 8其中web-test 项目式Java 8Jenkins 2.568.1三、开始安装3.1 克隆项目项目地址: https://github.com/438083791/jenkins.git3.2 将整个项目打包为 Jenkins.zip并上传至服务器 /jenkins 目录## 创建 jenkins 文件夹 sudo mkdir /jenkins ## 将文件压缩包上传至/jenkins 目录后确认压缩包是否存在 ls ## 解压压缩包 sudo unzip jenkins.zip -d ./3.3 执行安装jenkins 前检查脚本## 执行安装jenkins 前检查脚本 sudo bash /jenkins/deploy/05-project-local/without-docker/install-prereqs.sh3.4 执行安装jenkins 脚本## 执行安装jenkins 脚本 sudo bash /jenkins/deploy/05-project-local/without-docker/install-jenkins.sh3.5 查看jenkins 启动状态## 查看jenkins 启动状态 systemctl status jenkins-local3.6 查看jenkins 初始解锁密码 - 稍后访问 jenkins 需要使用## 查看jenkins 初始解锁密码 - 稍后访问 jenkins 需要使用 sudo cat /opt/ci/jenkins/home/secrets/initialAdminPassword3.7 关闭防火墙可选## 直接禁用防火墙停止取消开机自启所有端口放行 ## 目前是测试机为了方便生产环境只放行指定端口即可 sudo ufw disable ## 查看状态Status: inactive 代表关闭 sudo ufw status3.8 访问jenkins 并输入解锁密码http://你的服务器ip:8080/## 解锁后可以使用默认管理员登录账号:admin密码:admin3.9 安装插件## 安装插件可以查看 cat /jenkins/deploy/05-project-local/without-docker/plugins-hint.txt3.10 完成安装插件四、创建流水线4.1 创建项目4.2 填写项目信息名称 web-test选择 流水线然后确定4.3 编辑流水线信息查看jenkins 配置信息## 查看配置 Jenkinsfile cat /jenkins/deploy/05-project-local/without-docker/Jenkinsfile.no-git定义选择 Pipeline scripts然后保存4.4 查看编译过程日志4.5 编译成功到此为止只是编译打包和测试通过后续需要配置SHH实现远程发布4.6 新建一台虚机并安装Java jdk 8## 更新 apt-get sudo apt-get update ## 安装 jdk 8 sudo apt-get install -y openjdk-8-jdk ## 查看jdk版本 java -version ## 期望输出 ## openjdk version 1.8.0_492 ## OpenJDK Runtime Environment (build 1.8.0_492-8u492-ga~us2-0ubuntu1~25.10.1-b09) ## OpenJDK 64-Bit Server VM (build 25.492-b09, mixed mode)4.7 为当前本机 deploy 用户生成 ssh按照 3.2 中将项目上传至服务器 /jenkins 目录执行命令## 目标机准备 生成部署和启动用户、用户组 sudo DEPLOY_USERdeploy bash /jenkins/deploy/05-project-local/without-docker/remote/prepare-target.sh ## 目标机准备 生成ssh sudo DEPLOY_USERdeploy bash /jenkins/deploy/05-project-local/without-docker/remote/setup-deploy-ssh-key.sh ## 本机自测另开终端私钥拷到客户端文件后 chmod 600 /home/deploy/.ssh/id_ed25519 ssh -i /home/deploy/.ssh/id_ed25519 -o BatchModeyes -o StrictHostKeyCheckingaccept-new \ deploy目标机IP echo ssh_ok ## 放行端口按实际 APP_PORT默认 8088 sudo ufw allow 8088/tcp4.8 查看秘钥并配置在 jenkins 中## 查看刚生成的私钥-在目标机执行 cat /home/deploy/.ssh/id_ed255194.9 修改流水线 jenkins 配置中的DEPLOY_HOST 为目标机 ip4.10 重新构建并部署4.11 部署执行成功4.12 访问页面http://192.168.1.165:8088/hello五、结语到这里一套完整的Jenkins Java项目MavenSSH流水线一键部署方案就全部搭建完成了。通过本次实战配置我们成功实现了Java项目从代码提交、自动编译打包、远程服务器文件传输、服务启停的全自动化部署彻底替代了传统低效的手动部署模式。这套流水线方案最大的优势就是轻量化、易部署、零成本、实用性强无需复杂的容器、云原生组件仅通过Jenkins基础插件Shell脚本就能满足绝大多数中小型Java Web项目、SpringBoot项目的迭代部署需求极大提升了开发运维效率减少人为操作BUG。后续大家可以根据自身项目需求在此基础上拓展功能比如添加代码质量检测、构建失败邮件告警、版本备份、多环境部署、流水线可视化展示等进一步完善CI/CD体系。如果大家在配置过程中遇到插件安装失败、Maven打包报错、SSH远程连接超时、服务启动失败等问题欢迎在评论区留言交流一起查漏补缺、共同进步