Jenkins Job遷移

縱葦星海發表於2021-02-04

前幾天由於某些原因,新搞了一個jenkins例項,需要和老的機器具備相同的能力。

也就是說需要將老的jenkins例項上的大概200多個job同步到新的jenkins例項上。

下面是整個遷移的過程,如果你有更好的遷移方案,歡迎你在評論區或者後臺交流分享,共同提高​。

0. 方案確定

200多個job一方面是太多了,一個個重新建太費時,另一方面也擔心建錯。

所以就就想看下有沒有整體遷移的方案可以來實施,網上查了一下大概有兩種方式。

  1. 外掛:job-import-plugin
  2. 同步jobs目錄

這裡採用的是第二種方案即同步jobs目錄

# tree jenkins -L 1
jenkins
省略n多
|-- jobs
|-- logs
|-- nodes
|-- plugins
省略n多
`-- workspace

也就是同步老jenkins例項jenkins主目錄下的jobs到新的jenkins例項的jenkins主目錄下。

不知道的jenkins主目錄的可以到
系統管理-》系統設定-》主目錄裡檢視,或者通過瀏覽器訪問http://ip:port/configure裡檢視。

基本上就是先壓縮老jenkins例項jenkins主目錄下的jobs目錄,然後再複製壓縮之後的檔案到新jenkins例項的jenkins主目錄下、解壓,然後重啟服務。

1. 壓縮jobs目錄

1.1 初次壓縮

# tar -czvf jobs-bak.tar.gz jobs

但是執行完這個命令之後遲遲沒有結束,感覺不太對勁。第一反應是不是檔案太多或者太大。所以趕緊取消了命令的執行,使用了下面的命令來看下目錄的大小。

# du sh 

經過了比較長的等待後結果回來了,發現整個目錄近47G大,然後就想看下具體是哪些job的目錄會比較大。

# du -m --max-depth=1 | sort -nr

再次經過了比較長的等待後結果出來了。

48472 .
35347 ./a
6968  ./b
971 ./c
省略n多目錄

1.2 移除過多的歷史構建記錄之後再次壓縮

然後就是清理這些多餘的檔案,為了清理這些過多的檔案還差點整出了一個生產事故,具體參考我的上一篇博文Jenkins開啟丟棄舊的構建?你可要小心啊!
在最終清理完這些檔案之後再次壓縮,這個時候壓縮後得到的檔案小多了。

# tar -czvf jobs-bak.tar.gz jobs
# du -sh jobs-bak.tar.gz 
123M	jobs-bak.tar.gz

2. 遠端拷貝

# scp -f obs-bak.tar.gz root@JenkinsBip:/data/jenkins/

3. 登陸目標機器解壓

# tar -zxvf jobs-bak.tar.gz -C jobs

4. 載入jobs

解壓之後拷貝的job並不會立即生效,需要通過jenkins的 系統管理=》讀取設定相關的功能來載入拷貝過來的job。

另外也可以通過重啟服務來讓這些job生效。

# systemctl restart  jenkins

5. 經驗教訓

總結一下本次得到的教訓

我們在進行job遷移之前需要先移除過多的歷史構建記錄,只保留少量的歷史構建記錄,來保證在源機器和目標機器之間傳遞的資料儘量小,以減少資料壓縮傳輸耗時,提高遷移效率。

另外就是確保job依賴的外掛都要在新的機器上安裝,否則遷移過來的job執行時會有問題。

Jenkins Job遷移

相關文章