2015-10-19 122 views
0

我最近設置了一個Jenkins服務器,並且在配置了很多項目之後,我意識到能夠對所有配置設置進行版本控制將很有價值。Jenkins配置使用Git的版本控制

我遇到過的大多數備份解決方案和插件都涉及基本上只是將文件複製到備份文件夾或實質上相同的插件的腳本。但是,我不只是在尋找備份,我還希望有可用的版本。

所以想到它後,我繼續設置一個Git倉庫,它位於根Jenkins安裝文件夾。

這是我目前使用的.gitignore文件:

# ignore everything to start 
* 

# except these 
!**/ 
!*.xml 
!.gitignore 

# then ignore these 
builds/ 
plugins/ 
war/ 
lastStable/ 
lastSuccessful/ 

這似乎捕獲所有更改在詹金斯安裝文件夾中的任何XML文件工作得很好。我唯一的抱怨是這是一個手動過程,需要在任何可修改的變更集之後提交/推送回購。

我想知道是否有更好的方法來完成這一點,或者如果有這樣做有任何潛在的問題嗎?

回答

1

您應該查看Job DSL Plugin。它允許在源代碼等腳本文件中維護作業並查看配置。而且腳本可以很好地保存在源代碼管理中。工作流程正在將Job DSL腳本更改爲SCM檢入,然後在Jenkins中運行作業以檢出腳本並調整配置。

保持了SCM中經常變化的配置部分。 Jenkins配置的其他部分(如全局設置)可以保存在每日備份中,而不一定保存在源代碼管理中。配置的那些部分不會經常更改。

+0

有趣的插件。看完它後,你的帖子讓我思考更多基本線條。真正唯一的缺點是我目前在Jenkins文件夾的根目錄下安裝了一個Git倉庫,不得不遠程訪問服務器並推送任何配置更改。 我想在Jenkins中創建一個項目,這對我來說可以從Jenkins UI作爲單擊操作運行,這將是一個好的開始。由於作業將在Jenkins服務器節點本身上運行,編寫腳本來完成所有Git的內容應該相當容易,或者可以使用Git插件執行此操作。 – salimoneus

0

我最終創建了一個Jenkins項目,該項目基本上對任何對Jenkins配置的更改進行腳本添加/提交/推送。它使用提交消息的默認參數,如果爲空,則該腳本僅運行git狀態並終止。我還安排它每天晚上運行,以便利用自定義提交消息來提取未使用此作業推送的任何更改。

Jenkins目前在Windows上,因此這裏是我正在使用的批處理命令。由於Jenkins最初設置爲在SYSTEM帳戶下運行,所以我必須設置幾個環境變量以使其按原樣運行。

@ECHO OFF 

set HOMEDRIVE=C: 
set HOMEPATH=Users/Jenkins 
cd "C:\Program Files (x86)\Jenkins" 

@ECHO ON 

git status 

@ECHO OFF 

if "%commit_message%" == "" (
    EXIT 0 
) 

@ECHO ON 

git add -A 
git commit -m "%commit_message%" 

@ECHO OFF 

IF %ERRORLEVEL% NEQ 0 (
    EXIT 0 
) 

@ECHO ON 

git push 
git status 
git log -n 3 

存儲Git證書確實是唯一處理不好的東西。現在我只是添加了用戶:傳入Git repo網址,但顯然這並不理想。我過去曾嘗試過使用Windows的一些憑證保存方法,但他們沒有奏效。這仍然需要整理。

+0

我嘗試使用標準Git SCM插件配置事物,並在Jenkins中存儲憑據,但它總是吹掉我在Jenkins存儲庫中存在的任何更改。Git SCM插件似乎旨在將其自己的另一個回購副本拉下來,而不是在生活回購的唯一副本中工作。如果這有效,我可能可以使用Git Publisher插件來完成剩下的工作。如上所述使用批處理/腳本似乎是目前完成我的任務的最佳方式。 – salimoneus