Jenkins Job簡單高效遷移


前幾天由於某些原因,新搞了一個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運行時會有問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM