在 Debian 上升级 Jenkins 的推荐做法
一 升级前准备
- 备份关键数据与配置:至少备份 /var/lib/jenkins(JENKINS_HOME),必要时连同 /etc/default/jenkins 一起备份。示例:
sudo cp -a /var/lib/jenkins /var/lib/jenkins_backup_$(date +%F)。
- 检查并准备 Java:确认 Java 版本满足目标 Jenkins 的要求。自 2.346.3 起需要 Java 11+;部分新版本(如 2.463)建议使用 Java 17/21。命令:
java -version。
- 选择升级路径:优先使用 APT 仓库进行包升级;仅在受限环境或特殊需求时,才考虑手动替换 WAR 文件。
- 可选但强烈建议:在测试环境验证升级,或创建 快照/备份 以便快速回滚。
二 通过 APT 仓库升级(推荐)
- 导入 Jenkins GPG 密钥并添加稳定版仓库(若尚未添加):
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
echo "deb https://pkg.jenkins.io/debian-stable binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null
- 执行升级:
sudo apt update
sudo apt install jenkins(已安装时会升级到仓库最新版本)
- 重启并验证:
sudo systemctl restart jenkins
sudo systemctl status jenkins
- 说明:使用官方 Debian 稳定仓库可简化依赖管理,避免与系统其他 Java 应用产生冲突。
三 手动替换 WAR 文件的升级方式(仅在必要时)
- 适用场景:无法使用 APT、离线环境、或需快速回滚。
- 操作步骤:
- 停止服务:
sudo systemctl stop jenkins
- 备份原 WAR:常见路径为 /usr/share/jenkins/jenkins.war 或 /usr/lib/jenkins/jenkins.war;示例:
sudo cp /usr/share/jenkins/jenkins.war /usr/share/jenkins/jenkins.war.bak_$(date +%F)
- 下载新 WAR(示例,请替换为实际版本):
wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/war/2.492.1/jenkins.war -O /tmp/jenkins.war
- 替换 WAR:示例:
sudo cp /tmp/jenkins.war /usr/share/jenkins/jenkins.war
- 启动服务:
sudo systemctl start jenkins
- 验证:访问 http://<服务器IP>:8080,确认版本与功能正常。
- 风险提示:手动替换 WAR 可能绕过包管理器对依赖与脚本的处理,跨多个版本时更易出现插件/依赖不兼容,建议谨慎使用。
四 升级后的验证与常见问题
- 版本与连通性验证:
- 访问 http://<服务器IP>:8080,登录后查看 Manage Jenkins → System Information 中的版本号。
- 检查服务状态:
sudo systemctl status jenkins;查看日志:sudo journalctl -u jenkins -xe。
- Java 与插件兼容性:
- 若启动失败或频繁报错,优先核对 Java 版本是否满足新版本要求(如 Java 11+,部分版本建议 Java 17/21)。
- 升级后按需更新插件,必要时先备份 $JENKINS_HOME/plugins,再在 Manage Plugins 中批量升级。
- 回滚方案:
- APT 升级回滚:
sudo apt install jenkins=<旧版本号>(如仓库仍保留该版本)。
- WAR 方式回滚:停止服务,将备份的 jenkins.war.bak 拷回原路径并重启。
- 防火墙与端口:确保 8080(或自定义端口)在防火墙放行,避免升级后无法访问。