在 CentOS 上升级 Jenkins 的实用步骤
一 升级前准备
- 备份关键数据与配置:建议完整备份 JENKINS_HOME(默认 /var/lib/jenkins)、配置文件与插件目录,并导出现有作业配置,命令示例:
- 备份主目录:sudo cp -a /var/lib/jenkins /var/lib/jenkins_backup_$(date +%F)
- 备份日志:sudo cp -a /var/log/jenkins /var/log/jenkins_backup_$(date +%F)
- 检查并准备 Java:确认当前 Java 版本满足目标 Jenkins 的要求。自 Jenkins 2.361.1+ LTS 起支持 Java 11 或 Java 17;更早的 2.346.1+ 支持 Java 8/11/17。命令:java -version。如不满足,先安装合适版本的 OpenJDK(例如 sudo yum install java-11-openjdk-devel -y)。
- 确认安装方式:先判断是通过 YUM 包安装还是 WAR 包/容器运行,不同方式升级路径不同(见下文)。
二 按安装方式的升级步骤
- YUM 包管理安装(推荐,便于自动处理依赖与升级)
- 更新软件源并升级:sudo yum update jenkins -y
- 重启服务:sudo systemctl restart jenkins
- 验证版本:在 Jenkins 管理页面底部或执行:sudo systemctl status jenkins 查看版本信息
- WAR 包或 systemd 直接运行(常见于手动部署)
- 停止服务:sudo systemctl stop jenkins
- 备份旧 WAR:如 /usr/share/jenkins/jenkins.war → /usr/share/jenkins/jenkins.war.bak
- 下载新 WAR(示例为稳定版通道):sudo wget -O /usr/share/jenkins/jenkins.war https://get.jenkins.io/war-stable/latest/jenkins.war
- 启动服务:sudo systemctl start jenkins
- 验证版本:访问 http://服务器IP:8080,在“系统管理 → 关于 Jenkins”查看版本号
- 容器化部署(Docker)
- 直接拉取并重启新镜像,例如:docker pull jenkins/jenkins:lts-jdk17,然后重启容器(注意挂载 /var/lib/jenkins 数据卷以保留配置与作业)。
三 升级后的验证与回滚
- 版本与启动状态验证
- 访问 http://服务器IP:8080,在“系统管理 → 关于 Jenkins”确认新版本号
- 查看服务状态与日志:sudo systemctl status jenkins;sudo journalctl -u jenkins -xe
- 插件与兼容性检查
- 升级后优先在“插件管理”执行“检查更新”,必要时先升级关键插件,避免因 插件与 Jenkins 版本不兼容导致异常
- 快速回滚方案
- YUM:sudo yum downgrade jenkins -y 或还原备份的 jenkins.war 后重启
- WAR:将备份的 jenkins.war.bak 还原为 jenkins.war,重启服务
四 常见问题与排错要点
- Java 不匹配导致无法启动
- 现象:启动失败或频繁重启。处理:在 systemd 服务中显式指定 JAVA_HOME,例如:Environment=“JAVA_HOME=/usr/lib/jvm/java-11-openjdk”;然后执行 systemctl daemon-reload 并重启
- 端口被占用
- 现象:服务启动失败,端口冲突。处理:修改 /usr/lib/systemd/system/jenkins.service 中的 Environment=“JENKINS_PORT=8081”(示例),或检查占用进程后调整端口,执行 systemctl daemon-reload 并重启
- 权限问题
- 现象:日志或工作目录不可写。处理:确认 /var/lib/jenkins 与 /var/log/jenkins 属主为 jenkins:jenkins,必要时执行:sudo chown -R jenkins:jenkins /var/lib/jenkins /var/log/jenkins