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
)。