##每日備份JENKINS_HOME至版本控制系統SVNhtml
Jenkins是一個可擴展的開源的持續集成工具,也是當下最流行的持續集成工具。linux
###Jenkins主要功能###git
其中插件支持使得Jenkins可定製、可擴展。github
###JENKINS_HOME目錄結構### Jenkins的相關文件都存放在文件系統中,而JENKINS_HOME主要用來存放這些文件的,如系統配置文件、插件、每一個job的配置文件等。windows
JENKINS_HOME目錄結構以下:服務器
<pre> +- config.xml (jenkins root configuration) +- *.xml (other site-wide configuration files) +- userContent (files in this directory will be served under your http://server/userContent/) +- fingerprints (stores fingerprint records) +- plugins (stores plugins) +- jobs +- [JOBNAME] (sub directory for each job) +- config.xml (job configuration file) +- latest (symbolic link to the last successful build) +- builds +- [BUILD_ID] (for each build) +- build.xml (build result summary) +- log (log file) +- changelog.xml (change log) +- workspace (working directory for the version control system) </pre>maven
不管是Jenkins的升級、遷移仍是備份、恢復都須要對JENKINS_HOME的操做,而備份Jenkins只需備份JENKINS_HOME便可。分佈式
在JENKINS_HOME中,有些目錄是無需備份的,如:workspace。ide
由於workspace是版本控制系統的工做目錄,這個目錄下的相關文件都來自版本控制系統,均可以從版本控制系統獲取。svn
###Jenkins備份插件### Jenkins是可擴展的,有上千個插件可供選擇,在備份這方面有兩個插件可供選擇:thinBackup plugin和backup plugin。
thinBackup plugin能夠自動備份全局的和job的指定配置文件(不包括archive和workspace)。
backup plugin能夠備份JENKINS_HOME,能夠選擇是否備份workspace、builds history、maven atifacts archives、fingerprints等。
thinBackup plugin和backup plugin不一樣:
上面兩個備份插件整體來講知足通常的需求了。
一般持續集成服務器資源專用,Jenkins安裝在專門的服務器上(如:虛擬機)。 可是若是虛擬機掛了,短期內難以恢復,天然也沒法從備份恢復了(上面兩個插件都是本機備份)。
因此爲了應對這種狀況的發生,應該把JENKINS_HOME備份到其餘地方。
###將JENKINS_HOME備份到版本控制系統### 筆者選擇將JENKINS_HOME備份到版本控制系統:
備份前的初始化步驟以下:
具體的備份步驟以下:
上述步驟,若是第2步是手動,理論上是難以實現的,因此若是是手動備份,能夠不執行第5步操做 而這些流程化的步驟,若是手動操做,異常繁瑣、重複,懶人一般懶的作重複性的事,因此應該將其自動化。
關於自動化備份腳本,主要是實現上面的4個步驟:
對於第1步,使用Ant腳本實現
對於第2步、第3步和第4步,使用Python+svn client comands實現
此外,自動化備份,能夠在Jenkins上建立一個job專門用來定時備份JENKINS_HOME
具體的實現腳本見:
補充說明,上述所使用到的工具及環境:
* Jenkins 1.592 * Python 2.7.8 * svn client commands(Windows下安裝TortoiseSVN時須要手動選擇安裝) * Ant 1.8.1 * 在windows環境和linux環境都驗證測試過 * 在svn client 1.6和1.7以上環境都驗證測試過
###參考###