[Jenkins] 使用Git來對Jenkins專案設定做版本控制

前幾天在噗浪上看到[小鐵](http://www.plurk.com/jaceju)大提到[Travis CI]可以將專案設定和原始碼一起放在git上,心血來潮想研究Jenkins的設定是否也進行版本控管,找到了這套PlugIn可以實現,雖然它並不是將設定檔案原始碼放在同一個地方,而是另外存放一個Repository,但也是讓我們想測試Jenkins時更加的方便。這套PlugIn是[SCM Sync configuration plugin],它可以在每次修改完設定後,自動將設定檔commit到版本控制系統中,並可以從版本控制系統還原Jenkins的設定檔,如此一來,想要大膽的修改CI Server的危險性就降低了許多囉!

前言

前幾天在噗浪上看到小鐵大提到Travis CI可以將專案設定和原始碼一起放在git上,

心血來潮想研究Jenkins的設定是否也進行版本控管,找到了這套PlugIn可以實現,

雖然它並不是將設定檔案原始碼放在同一個地方,而是另外存放一個Repository,

但也是讓我們想測試Jenkins時更加的方便。

這套PlugIn是SCM Sync configuration plugin,它可以在每次修改完設定後,

自動將設定檔commit到版本控制系統中,並可以從版本控制系統還原Jenkins的設定檔,

如此一來,想要大膽的修改CI Server的危險性就降低了許多囉!

安裝

進入Jenkins首頁後,點選左邊的管理Jenkins,再選擇管理外掛程式

找到SCM Sync configuration plugin,勾選安裝並重啟Server

回到首頁,點選管理Jenkins,選擇設定系統

找到SCM Sync configuration,選擇git,輸入要存放的repository位置

點選儲存,看到會跳出輸入git commit訊息的視窗,輸入訊息並送出

瀏覽版本控制系統,可以看到設定檔已經被push到上面 (以github為例)

如此一來我們設定就完成了,不論在修改Jenkins的設定或是專案的設定時,

設定檔都會自動被Commit到版本控制系統中。

透過版本控制系統還原

當我們安裝完Jenkins之後,如果之前有使用SCM Sync configuration plugin的話,

也可以透過SCM Sync configuration plugin來還原我們的Jenkins。

首先我們先安裝必須的PlugIn,例如git, msbuild...等

同安裝步驟,一樣到管理Jenkins設定git的位置, 並選擇儲存 (這邊會等一下子)

重新進入管理Jenkins,點選Reload

我們可以看到更新的config如下,我們必須重新啟動Jenkins來載入設定

(重新啟動網址: http://localhost:8080/restart)

重新啟動後,我們可以看到所有的設定都回來了,並可以成功的建置專案

加入Log檔追蹤問題

在第一次使用這個PlugIn的時候,由於流程不熟悉所以遇到了一些問題,

幸好可以透過Log的方式來釐清問題發生的原因,這邊也向大家分享如何加上SCM sync的Log

到首頁,點選管理Jenkins,選擇系統紀錄

點選新增紀錄錄製器

設定名稱scmsyncconfiguration,設定錄製器hudson.plugins.scmsyncconfiguration,選擇all並儲存

從此之後,我們可以在系統紀錄看到同步的Log

結語

透過版本控制來管理Jenkins的設定,讓我們在Jenkins的使用上更佳的靈活,

也方便我們做各種不同的嘗試,並可以輕鬆地還原,

關於Jenkins更多的內容也歡迎參考之前鐵人賽的分享系列文章

如果有任何問題歡迎大家提出或討論喔~^_^