Jenkins 升级最佳实践
📋 目录
- 升级前准备
- 升级 Jenkins 核心
- 升级插件
- 升级后验证
- 常见问题与解决方案
- 回滚方案
🚨 升级前准备
1. 检查当前状态
1 2 3 4 5 6 7 8
| curl -s http://localhost:8080/login | grep -o 'Jenkins [0-9.]*'
java -version
ls -la /var/jenkins_home/plugins/*.hpi | wc -l
|
2. 备份(必须!)
1 2 3 4 5 6 7 8 9 10 11
| cp -r /var/jenkins_home /var/jenkins_home.backup.$(date +%Y%m%d)
cp /usr/share/java/jenkins.war /usr/share/java/jenkins.war.backup.$(date +%Y%m%d)
cp -r /var/jenkins_home/plugins /var/jenkins_home/plugins.backup.$(date +%Y%m%d)
cp -r /var/jenkins_home/jobs /var/jenkins_home/jobs.backup.$(date +%Y%m%d)
|
3. 检查系统要求
Jenkins 2.551+ 要求:
- ✅ Java 21 或 Java 25
- ✅ 内存:至少 2GB
- ✅ 磁盘:至少 10GB 可用空间
检查 Java 版本:
升级 Java:
1 2 3 4 5
| cd /home wget https://download.java.net/java/GA/jdk21.0.2/f2283984656d49d69e91c558476027ac/13/GPL/openjdk-21.0.2_linux-x64_bin.tar.gz tar -xzf openjdk-21.0.2_linux-x64_bin.tar.gz export JAVA_HOME=/home/jdk-21.0.2 export PATH=$JAVA_HOME/bin:$PATH
|
4. 通知团队
- 📧 发送升级通知邮件
- 📅 选择低峰时段(如周末或深夜)
- ⏸️ 暂停正在进行的构建
🚀 升级 Jenkins 核心
方法 1:Jenkins UI 升级(推荐)
Jenkins 管理 → 插件管理 → Updates:
- 点击 Check now (立即检查)
- 找到 Jenkins 核心更新
- 勾选 Jenkins
- 点击 Download now and install after restart
- 勾选 Restart Jenkins when installation is complete and no jobs are running
- 点击 Install
- 等待重启(约 5-10 分钟)
优点:
方法 2:手动替换 jenkins.war
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| systemctl stop jenkins
cp /usr/share/java/jenkins.war /usr/share/java/jenkins.war.backup
cd /usr/share/java wget https://updates.jenkins.io/download/war/2.553/jenkins.war
chown jenkins:jenkins jenkins.war chmod 644 jenkins.war
systemctl start jenkins
tail -f /var/log/jenkins/jenkins.log
|
方法 3:Docker 升级
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| docker run --rm -v jenkins_home:/data -v $(pwd):/backup alpine tar czf /backup/jenkins-backup.tar.gz -C /data .
docker stop jenkins docker rm jenkins
docker pull jenkins/jenkins:lts
docker run -d -p 8080:8080 -p 50000:50000 \ -v jenkins_home:/var/jenkins_home \ --name jenkins \ jenkins/jenkins:lts
docker logs -f jenkins
|
🔧 升级插件
1. 批量升级所有插件(推荐)
Jenkins 管理 → 插件管理 → Updates:
- 点击 Check now
- 点击 Select all (全选)
- 点击 Download now and install after restart
- 勾选 Restart Jenkins when installation is complete
- 等待重启
优点:
- ✅ 自动解决依赖关系
- ✅ 避免版本冲突
- ✅ 最安全的方式
2. 升级单个插件
Jenkins 管理 → 插件管理 → Installed:
- 点击 Updates available
- 找到目标插件
- 勾选并安装
- 重启 Jenkins
3. 手动安装插件
1 2 3 4 5 6 7 8 9 10 11 12
| cd /var/jenkins_home/plugins wget https://updates.jenkins.io/download/plugins/git-client/6.4.3/git-client.hpi
systemctl stop jenkins
systemctl start jenkins
|
4. 处理依赖冲突
如果遇到依赖错误:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| systemctl stop jenkins
cd /var/jenkins_home/plugins rm -f git*.hpi git*.jpi git-client*.hpi git-client*.jpi gitlab*.hpi gitlab*.jpi rm -rf git git-client gitlab-plugin
systemctl start jenkins
|
✅ 升级后验证
1. 检查版本
1 2 3 4
| curl -s http://localhost:8080/login | grep -o 'Jenkins [0-9.]*'
|
2. 检查插件状态
Jenkins 管理 → 插件管理 → Installed:
- ✅ 所有插件状态为 “已启用”
- ✅ 无依赖错误
- ✅ 无警告信息
3. 检查任务配置
1 2 3 4 5
| for job in /var/jenkins_home/jobs/*/config.xml; do echo "检查:$job" grep -i "error" "$job" || echo "✅ 正常" done
|
4. 测试构建
- 选择一个简单任务
- 点击 立即构建
- 查看构建日志
- 确认成功完成
5. 检查日志
1 2 3 4 5 6 7 8
| tail -100 /var/log/jenkins/jenkins.log
journalctl -u jenkins -n 50
grep -i "error\|exception\|failed" /var/log/jenkins/jenkins.log | tail -20
|
🔧 常见问题与解决方案
问题 1:Java 版本太低
错误信息:
1
| Running with Java 17, which is older than the minimum required version (Java 21)
|
解决方案:
1 2 3 4 5 6 7 8
| wget https://download.java.net/java/GA/jdk21.0.2/.../openjdk-21.0.2_linux-x64_bin.tar.gz tar -xzf openjdk-21.0.2_linux-x64_bin.tar.gz export JAVA_HOME=/home/jdk-21.0.2 export PATH=$JAVA_HOME/bin:$PATH
systemctl restart jenkins
|
问题 2:插件依赖缺失
错误信息:
1
| Plugin is missing: jersey3-api (3.1.11-2.v4a_b_db_cf4557b_)
|
解决方案:
- Jenkins UI → 插件管理 → Available plugins
- 搜索
jersey3-api
- 安装并重启
问题 3:类加载冲突
错误信息:
1
| java.lang.ClassNotFoundException: org.eclipse.jgit.errors.MissingObjectException
|
解决方案:
1 2 3 4 5 6 7 8 9 10 11 12 13
| systemctl stop jenkins
cd /var/jenkins_home/plugins rm -f git*.hpi git-client*.hpi gitlab*.hpi rm -rf git git-client gitlab-plugin
systemctl start jenkins
|
问题 4:任务配置保存失败
错误信息:
1
| Error while serving .../configSubmit
|
解决方案:
- 重启 Jenkins(清除缓存)
- 如果不行,清理插件缓存:
1
| rm -rf /var/jenkins_home/plugins/.cache
|
- 重新安装相关插件
问题 5:Webhook 不触发
问题:GitLab 推送后 Jenkins 无反应
解决方案:
检查 GitLab Server 配置
1 2 3
| Jenkins 管理 → 系统配置 → GitLab - Server URL: 正确 - Credentials: 有效
|
检查任务触发器
1 2
| 任务配置 → 构建触发器 ✅ Build when a change is pushed to GitLab
|
检查 GitLab Webhook
1 2 3
| GitLab → 项目 → 设置 → Webhooks - URL: 正确 - 触发器:Push events
|
测试 Webhook
1
| GitLab → Webhooks → Test → Push events
|
🔙 回滚方案
回滚 Jenkins 核心
1 2 3 4 5 6 7 8 9 10 11
| systemctl stop jenkins
cp /usr/share/java/jenkins.war.backup /usr/share/java/jenkins.war
systemctl start jenkins
curl -s http://localhost:8080/login | grep -o 'Jenkins [0-9.]*'
|
回滚插件
1 2 3 4 5 6 7 8 9
| systemctl stop jenkins
rm -rf /var/jenkins_home/plugins cp -r /var/jenkins_home/plugins.backup /var/jenkins_home/plugins
systemctl start jenkins
|
完全回滚
1 2 3 4 5 6 7 8 9
| systemctl stop jenkins
rm -rf /var/jenkins_home cp -r /var/jenkins_home.backup.YYYYMMDD /var/jenkins_home
systemctl start jenkins
|
📋 升级检查清单
升级前
升级中
升级后
📖 参考链接
📝 升级记录模板
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| ## Jenkins 升级记录
**升级日期**: YYYY-MM-DD **升级人员**: [姓名]
### 升级前 - Jenkins 版本:x.x.x - Java 版本:x.x.x - 插件数量:xxx
### 升级后 - Jenkins 版本:x.x.x - Java 版本:x.x.x - 插件数量:xxx
### 问题与解决 1. [问题描述] - [解决方案] 2. [问题描述] - [解决方案]
### 验证结果 - [ ] Jenkins 启动正常 - [ ] 所有插件正常 - [ ] 任务配置正常 - [ ] 构建测试通过 - [ ] Webhook 测试通过
### 备注 [其他需要记录的信息]
|
升级前务必备份!升级时按顺序操作!升级后全面验证!🔥