jenkins在centos上如何迁移
小樊
40
2025-11-16 03:37:52
Jenkins 在 CentOS 上的迁移指南
一 迁移总览与准备
- 迁移的核心是完整复制 JENKINS_HOME 目录(配置、插件、任务等)。默认路径为 /var/lib/jenkins,也可在 Dashboard > Manage Jenkins > Configure System 或 /etc/sysconfig/jenkins 中查看实际路径。迁移前建议先停掉服务,避免写入冲突。为降低风险,准备一台新 CentOS 机器,安装与旧机一致的 Java 与 Jenkins 版本,并确认 8080 端口可用或按需调整。若计划变更主目录位置,先记录旧路径与新路径,后续一并修改服务配置。
二 标准迁移步骤
- 在旧机停止服务并备份主目录
- systemctl stop jenkins
- tar -czvf jenkins_home_$(date +%F).tar.gz -C /var/lib/jenkins .
- 将备份传输到新机
- scp jenkins_home_*.tar.gz user@new_server:/tmp/
- 在新机解压并修正权限
- mkdir -p /var/lib/jenkins
- tar -xzvf /tmp/jenkins_home_*.tar.gz -C /var/lib/jenkins
- chown -R jenkins:jenkins /var/lib/jenkins
- 安装同版本 Jenkins(推荐 RPM 方式)
- wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
- rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
- yum install -y jenkins fontconfig
- systemctl daemon-reload
- 如变更了主目录,修改服务文件
- 编辑 /usr/lib/systemd/system/jenkins.service:
Environment=“JENKINS_HOME=/your/new/jenkins_home”
WorkingDirectory=/your/new/jenkins_home
- systemctl daemon-reload
- 启动并验证
- systemctl enable --now jenkins
- 访问 http://new_server:8080,检查 插件、全局配置、构建历史 是否完整。
三 只迁移关键数据的精简方案
- 适用于快速恢复或跨版本测试:仅拷贝 config.xml、jobs、users、plugins 四个目录到新机的 JENKINS_HOME。若目标机已有同名 Job,先改名或处理冲突再覆盖。完成后启动服务,必要时在 Manage Jenkins > Manage Plugins 中修复缺失或版本不兼容的插件。
四 常见问题与处理
- 插件或构建失败:优先检查 plugins 是否完整、版本是否兼容;必要时卸载问题插件后重装兼容版本。
- 权限错误:确保 /var/lib/jenkins(或新主目录)属主为 jenkins:jenkins。
- 端口冲突:修改服务文件中的 –httpPort=9090,并放行防火墙:firewall-cmd --permanent --add-port=9090/tcp && firewall-cmd --reload。
- 构建节点冲突:避免直接拷贝 nodes 目录到新 master,以免出现多主争用同一 agent;应在新环境重新添加节点。
- SVN/Git 凭据或证书问题:以 jenkins 用户执行一次交互操作以保存证书/凭据(如 svn ls 并选择永久信任),避免首次拉取失败。
五 迁移后的验证与回滚
- 验证清单:
- 登录页面与管理员密码可用(首次解锁密码位于 $JENKINS_HOME/secrets/initialAdminPassword)。
- Manage Jenkins > Plugins 插件数量与版本一致;Manage Jenkins > Global Tool Configuration 中 JDK/Maven/Git 路径正确。
- 抽样执行 构建、归档、部署,核对 构建历史 与产出。
- 回滚方案:保留旧机 JENKINS_HOME 与安装包一段时间;若新机异常,可快速停止新机服务、恢复旧机目录并启动,以最短时间恢复生产。