Ubuntu Jenkins项目迁移全流程指南
确认新旧环境基础配置
确保新Ubuntu服务器已安装与旧服务器相同版本的Java(如OpenJDK 8,低版本Jenkins不支持JDK 11及以上),可通过java -version验证;同时下载对应版本的Jenkins .deb安装包(从Jenkins Debian Stable仓库),避免版本冲突。
备份旧服务器关键数据
停止旧服务器上的Jenkins服务(sudo systemctl stop jenkins),避免迁移过程中数据损坏;备份JENKINS_HOME目录(默认路径为/var/lib/jenkins,可通过cat /etc/default/jenkins | grep JENKINS_HOME确认),同时备份Jenkins全局配置文件(/etc/default/jenkins)、日志目录(/var/log/jenkins)及系统初始化脚本(/etc/init.d/jenkins)。打包命令示例:
sudo tar -czvf jenkins_full_backup.tar.gz \
$JENKINS_HOME \
/etc/default/jenkins \
/var/log/jenkins \
/etc/init.d/jenkins
安装Java环境
执行以下命令安装OpenJDK 8(与旧服务器版本一致):
sudo apt update && sudo apt install -y openjdk-8-jdk
验证安装:java -version,确保输出显示Java 1.8.x版本。
安装对应版本的Jenkins
使用备份中获取的.deb包安装Jenkins(替换<version>为旧服务器版本,如2.303):
wget https://pkg.jenkins.io/debian-stable/binary/jenkins_<version>_all.deb
sudo dpkg -i jenkins_<version>_all.deb
安装完成后,Jenkins会自动生成默认配置,但暂不启动服务(后续需覆盖配置)。
传输备份文件到新服务器
使用scp命令将旧服务器的jenkins_full_backup.tar.gz传输到新服务器(替换<new_server_ip>为新服务器IP):
scp jenkins_full_backup.tar.gz root@<new_server_ip>:/root/
恢复数据到JENKINS_HOME目录
停止新服务器上的Jenkins服务(sudo systemctl stop jenkins),解压备份文件到默认的JENKINS_HOME路径(/var/lib/jenkins):
sudo tar -xzvf /root/jenkins_full_backup.tar.gz -C /
修复目录权限(Jenkins服务需以jenkins用户身份运行):
sudo chown -R jenkins:jenkins /var/lib/jenkins
sudo chmod 775 /var/log/jenkins
sudo chmod 755 /etc/init.d/jenkins
处理特殊目录冲突
若旧服务器有nodes(节点配置)或jobs(作业)目录,迁移前需排除(避免节点重复连接或作业定时任务冲突),可通过rsync增量同步时添加--exclude参数:
rsync -a --exclude='nodes' --exclude='jobs' $JENKINS_HOME/ /var/lib/jenkins/
启动Jenkins并检查日志
启动Jenkins服务(sudo systemctl start jenkins),查看日志确认无报错:
sudo tail -f /var/log/jenkins/jenkins.log
日志中应显示“Jenkins is fully up and running”,无“plugin missing”“config corrupted”等错误。
验证核心功能
http://<新服务器IP>:8080,使用旧服务器的管理员账号登录(密码存储在$JENKINS_HOME/secrets/initialAdminPassword,若未修改则直接使用)。jobs目录)已迁移,点击作业名称查看配置(如源码管理、构建步骤)是否与旧服务器一致。$JENKINS_HOME/credentials.xml是否迁移,必要时更新凭证路径(如旧服务器SSH密钥路径为~/.ssh/id_rsa,新服务器需同步该密钥并更新权限)。优化网络与安全配置
$JENKINS_HOME/config.xml,查找<jenkinsUrl>标签,更新为http://<新服务器IP>:8080。$JENKINS_HOME/.ssh/id_rsa*文件复制到新服务器的相同路径,修复权限:sudo cp /var/lib/jenkins/.ssh/id_rsa* /var/lib/jenkins/.ssh/
sudo chown jenkins:jenkins /var/lib/jenkins/.ssh/*
sudo ufw allow 8080/tcp
sudo ufw allow 50000/tcp
系统管理→插件管理,检查插件版本是否与新Jenkins版本兼容(可通过插件列表导出旧插件,新服务器手动安装对应版本)。JENKINS_HOME及子目录的所有者为jenkins:jenkins(sudo chown -R jenkins:jenkins /var/lib/jenkins)。