jenkins作為最常用的自動部署開源工具,深受喜愛,但是在實際使用中會發現,很容易就會導緻磁盤不足,及時通過設定隻保留最近的3~5個建構,還架不住公司的項目多,應用多,微服務多,磁盤不夠時,就很多時候需要進行jenkins的資料遷移,下面就記錄一下jenkins的遷移步驟和需要注意的事情
正文
首先,jenkins是直接使用yum進行安裝的,通過rpm 指令可以檢視到安裝了哪些檔案
$ rpm -qa|grep jenkins
jenkins-2.138.3-1.1.noarch
# 檢視jenkins安裝了哪些檔案
$ rpm -ql jenkins-2.138.3-1.1.noarch
/etc/init.d/jenkins
/etc/logrotate.d/jenkins
/etc/sysconfig/jenkins
/usr/lib/jenkins
/usr/lib/jenkins/jenkins.war
/usr/sbin/rcjenkins
/var/cache/jenkins
/var/lib/jenkins
/var/log/jenkins
如上所示,jenkins的主配置檔案為 /etc/sysconfig/jenkins,jenkins的啟動檔案則為一個war包/usr/lib/jenkins/jenkins.war,還有一個/var/cache/jenkins目錄,這個裡面就是war包解壓出來的檔案,是web頁面的檔案。還有一個啟動檔案,/etc/rc.d/init.d/jenkins是jenkins服務的啟動腳本檔案。而/var/lib/jenkins就是預設的jenkins的家目錄,所有jenkins上的job的資料,工作空間等等,都在這裡面。
要遷移jenkins,很簡單,主要遷移兩個目錄即可。
1,遷移家目錄
在jenkins的主配置檔案中,第一個就是 JENKINS_HOME 的設定,預設為/var/lib/jenkins。将這個改到需要遷移的目錄,然後将/var/lib/jenkins整個目錄移動到新的目錄下,比如,我這裡是 /data/jenkins
$ 遷移前先停止jenkins
systemctl stop jenkins
# 修改配置檔案
$ vim /etc/sysconfig/jenkins
-------------------------------------------------------------
JENKINS_HOME="/data/jenkins"
-------------------------------------------------------------
# 移動檔案
$ mkdir -p /data
$ mv /var/lib/jenkins /data/
# 啟動jenkins
$ systemctl start jenkins
啟動會,會發現一個問題,所有原先job的workspace都沒有了,但是檔案明明有,但是頁面點進去會現實沒有,報錯的目錄還是指向原先/var/lib/jenkins/workspace的目錄,這是哪裡沒改呢,
我們首先看 /data/jenkins/config.xml,裡面會發現workspace目錄不是寫死的,我已經修改了JENKINS_HOME,講道理workspace的目錄也應該一起改變了才對
$ vim /data/jenkins/config.xml
--------------------------------------------------------------------------
<workspaceDir>${JENKINS_HOME}/workspace/${ITEM_FULL_NAME}</workspaceDir>
--------------------------------------------------------------------------
# 如果隻需要單獨遷移workspace位址,就可以修改這裡進行遷移
注意: 實際上,workspace目錄的确是已經改變了,但是原先的job産生的建構,每個建構都會生産一個builds,在目錄/data/jenkins/jobs/{job-name}/builds/ 下,會保留之前建構的builds,以數字為目錄,在每個建構下,會有一個build.xml檔案,此檔案記錄了當時整個建構的資訊,而裡面也記錄了workspace,對,沒錯,就是這個workspace目錄它是寫死的,寫死的! 是以,我們遷移了主目錄後,為什麼workspace進去沒有檔案就是因為這個workspace沒有改,還是之前的/var/lib/jenkins/workspace目錄。
批量修改方式如下:
# 批量修改所有build.xml,修改workspace目錄為新目錄
$ cd /data/jenkins/jobs
$ find ./ -name build.xml | xargs sed -i 's/var\/lib/data/' # 這裡我是由/var/lib/jenkins/workspace 改為/data/jenkins/workspace 所有隻需要将 var/lib 替換成 data 即可。 根據自己實際情況修改
ok,修改了,修改後,需要重新加載這些配置才能生效,直接在頁面點選重新加載配置: 系統管理 --》
ok,到此就遷移完成了,然後就能在job中看到原先的workspace了。