到目前为止,本章都是从用户界面的角度介绍Hudson的各种功能。用心的读者可以想象到,Hudson的各种配置、任务、报告肯定是以文件的形式存储在磁盘中的。这就是Hudson的工作目录,了解该目录不仅能帮助读者理解Hudson用户界面中的各种特性,更重要的是,读者需要明白怎样为Hudson分配合理的磁盘空间,长期运行的持续集成服务往往会消耗大量的磁盘空间,理解哪些任务对应的哪些文件消耗了多少磁盘空间,对持续集成服务的维护来说至关重要。
默认情况下,Hudson使用用户目录下的.hudson/目录作为其工作目录。例如,在笔者的Vista系统上,该目录为C:/Users/juven/.hudson/,而在Linux系统上,该目录为/home/juven/.hudson/。由于该目录会渐渐消耗大量的磁盘空间,因此用户往往会希望自定义该工作目录的位置,这时用户可以设置环境变量HUDSON_HOME,例如将其设置为D:/hudson-work。关于如何设置环境变量,请参考2.1.3节和2.2.1节。
一个典型的Hudson工作目录包含的内容如图11-34所示。
对这些文件、目录的解释如下:
·*.xml:这些XML文件是Hudson核心及相关插件的配置,如config.xml配置了全局的JDK、任务视图等信息,hudson.tasks.Maven.xml配置了Maven安装信息,hudson.tasks.Mailer.xml配置了邮件服务器信息,等等。
图11-34 Hudson工作目录的内容
·war:如果用户独立运行hudson.war,那么其内容会被释放到该目录中后再启动。
·users:Hudson所存储的用户信息。
·userContent:用户可以将任意内容放到该目录下后通过Hudson服务页面的子路径访问,如http://192.168.1.101:8080/userContent/。
·updates:这里存储了各类可更新的插件信息。
·plugins:所有Hudson插件都被安装在该目录而不会影响到Hudson的核心。
·jobs:该目录包含了所有Hudson任务的配置、存储的构建、归档的构建输出等内容。本节稍后会详细解释该目录。
上述目录中最重要的可能就是jobs子目录了,这里包含了所有Hudson的任务配置、每个任务的工作区、构建历史等信息,具体内容如图11-35所示。
图11-35中的jobs目录下有两个子目录account和maven3,它们分别对应了两个Hudson任务。每个任务都会包含如config.xml、nextBuildNumber、scm-polling.log等文件,其中的config.xml包含了该任务的所有配置,如SCM地址、轮询频率等。
每个任务目录下会包含一个workspace子目录,这就是该任务的工作区。这里有最近一次构建所包含的源代码及相关输出。
任务目录下还有一个builds子目录,该目录包含了所有Hudson记录的历史构建,每个构建对应了一个目录,这些目录都是以构建所发生的时间命名的,如2010-04-15_14-56-08,每个构建目录包含了一些文件记录其成功失败信息、构建日志、测试报告、变更记录等。如果用户为该任务配置了文件归档,那么每次构建归档的内容都会存储在archive子目录下。
图11-35 Hudson工作目录的jobs子目录内容
可以想象,如果用户没有如11.6.1节中介绍的那样抛弃旧的构建,那么每次构建的记录都会保存在任务目录的builds子目录下。随着时间的推移,这些记录会消耗大量的磁盘空间,因此用户在使用Hudson的时候应该按照实际情况为其分配足够的磁盘空间,同时合理地抛弃旧的构建记录。