标签:
Jenkins是一个可扩展的开源的持续集成工具,也是当下最流行的持续集成工具。
其中插件支持使得Jenkins可定制、可扩展。
Jenkins的相关文件都存放在文件系统中,而JENKINS_HOME主要用来存放这些文件的,如系统配置文件、插件、每个job的配置文件等。
JENKINS_HOME目录结构如下:
+- 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)
无论是Jenkins的升级、迁移还是备份、恢复都需要对JENKINS_HOME的操作,而备份Jenkins只需备份JENKINS_HOME即可。
在JENKINS_HOME中,有些目录是无需备份的,如:workspace。
因为workspace是版本控制系统的工作目录,这个目录下的相关文件都来自版本控制系统,都可以从版本控制系统获取。
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备份到版本控制系统:
备份前的初始化步骤如下:
具体的备份步骤如下:
上述步骤,如果第2步是手动,理论上是难以实现的,所以如果是手动备份,可以不执行第5步操作
而这些流程化的步骤,如果手动操作,异常繁琐、重复,懒人通常懒的做重复性的事,所以应该将其自动化。
关于自动化备份脚本,主要是实现上面的4个步骤:
对于第1步,使用Ant脚本实现
对于第2步、第3步和第4步,使用Python+svn client comands实现
此外,自动化备份,可以在Jenkins上创建一个job专门用来定时备份JENKINS_HOME
具体的实现脚本见:donhui/JENKINS_HOME_BAKCUP
补充说明,上述所使用到的工具及环境:
* Windows 2003 Server
* Jenkins 1.592
* Python 2.7.8
* SVN Server 1.7
* svn client commands 1.7(Windows下安装TortoiseSVN时需要手动选择安装)
* Ant 1.8.1
标签:
原文地址:http://my.oschina.net/donhui/blog/396639