天天看點

centos7 遷移jenkins的workspace問題正文

    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,修改了,修改後,需要重新加載這些配置才能生效,直接在頁面點選重新加載配置: 系統管理 --》

centos7 遷移jenkins的workspace問題正文

ok,到此就遷移完成了,然後就能在job中看到原先的workspace了。