我该将HUDSON_HOME的哪个部分放入源代码控制?

10

我希望使用Subversion管理Hudson的配置文件以进行备份。 Hudson Wiki列出了$HUDSON_HOME的目录结构如下:

HUDSON_HOME
 +- config.xml     (hudson root configuration)
 +- *.xml          (other site-wide configuration files)
 +- fingerprints   (stores fingerprint records)
 +- plugins        (stores plugins)
 +- jobs
     +- [JOBNAME]      (sub directory for each job)
         +- config.xml     (job configuration file)
         +- workspace      (working directory for the version control system)
         +- 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)

显然,jobs/[JOBNAME]/builds不应该进入源代码控制,但config.xml是一个很好的选择。插件和指纹则不那么明显。

你如何管理你的Hudson配置?


相关地,有一个插件可以为您执行SCM备份(https://wiki.jenkins-ci.org/display/JENKINS/SCM+Sync+configuration+plugin)。 - ento
3个回答

7
一个版本控制工具(SCM)可能不是备份Hudson工作空间的最佳工具 - 就像使用Subversion来存储游戏偏好设置或Web应用程序的数据库表内容一样。此外,出于以下原因,似乎并不必要:
  • 配置文件不应频繁更改(如代码),因此夜间备份就足够了。
  • 当您通过GUI进行更改时,需要有东西去系统并执行svn commit。由于这可能是手动步骤,因此留下了人为错误的余地。
  • 您可能永远不需要比较配置更改,对于万一需要,您可以提取并查看适当的备份(请参见下文)。
总之,使用Subversion来完成此任务似乎有点笨拙。对于备份,我建议只需设置一个cron作业,执行tar cvzf $HUDSON_HOME即可。如果您有足够的磁盘空间,可以选择省略构建目录,但这似乎有点不必要。

编辑: 关于这个问题和oeuftete的回答之间的不同之处,我的回答只是基于我使用Hudson的经验。他/她的回答提供了不同的角度,这很好。我完全同意其中的观点,即每种情况都是不同的,可能需要不同的手段来满足一个目标。


7
我使用源代码管理工具来管理我的Hudson配置。我保留了顶层的config.xml和每个任务的config.xml。我编写了一个小脚本,用于从Hudson获取配置文件,并根据需要提交/添加/删除它们(以及其他使配置管理更容易的功能)。
关于Rob Hruska提出的观点,针对我的特定设置:
- 配置经常更改(特别是通知) - (如上所述)使用脚本进行更新 - 我总是进行差异比较。我们有多个管理员可以更新配置,这些差异很有用
尽管如此,每种情况都是不同的。我为配置所做的管理没有免费的午餐。每晚压缩所有内容的cron作业肯定更便宜,也可能足够了。

1
同意“每种情况都是不同的”。我认为你和我在备份方面所做的事情如何被我们的环境所证明是理由的两个极端; 拥有多个角度是很好的。 - Rob Hruska
1
+1 给 Rob 指出 SCM 可能不是正确的解决方案,+1 给 oeuftete 提供的答案,即备份每个 config.xml 就足够了。我选择 oeuftete 的答案,因为它直接回答了我的问题标题。我会从你们两个的角度重新考虑我的备份计划。非常感谢。 - ento

2
我找到了一本关于为Hudson设置SVN备份的好书: http://javaadventure.blogspot.com/2010/07/keeping-hudson-configuration-and-data.html 我已经根据自己的需求进行了适当修改,但是你应该从Hudson主目录中备份以下内容:
  • 每个任务的config.xml(jobs/*/config.xml)
  • 用户目录下的所有内容
  • 已安装插件列表
此链接还提供了一些额外的SVN技巧,例如删除不存在的作业配置等。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接