在我的公司,我们有三台配置了 100 多个作业的 Hudson CI 服务器。我们正在寻找一种自动化的方式来定期备份作业配置和构建历史。
目前我们有一个 ant 脚本,我们将其配置为作业,但它不容易维护且不优雅。
你们有没有找到一种方法来管理这个?
在我的公司,我们有三台配置了 100 多个作业的 Hudson CI 服务器。我们正在寻找一种自动化的方式来定期备份作业配置和构建历史。
目前我们有一个 ant 脚本,我们将其配置为作业,但它不容易维护且不优雅。
你们有没有找到一种方法来管理这个?
有一个备份插件。
我不相信它支持定期备份的调度,但是您可以通过 URL 访问它来触发它(就像其他一些 Hudson 远程 API),在这种情况下,您可以简单地设置一个 cron 作业ping URL。
我的 Hudson 服务器在 Windows 上运行,所以我为此使用 Robocopy。我让它镜像每个构建服务器的 hudson home 中的所有文件,不包括作业工作区目录。由于备份将转到一个中心位置,因此我在文件服务器上有一个计划任务,该任务每晚运行我的脚本,而 Hudson 服务器不知道该过程。
该脚本在每台 hudson 机器上都有一个条目:
robocopy path-to-buildserver-hudson-home 备份文件夹路径\buildserver-name /ZB /E /NP /R:1 /W:5 "/LOG:%~dp0backup_log.txt" /TEE /XD 工作区
注意:在第一台机器之后,它变成 /LOG+: 而不是 /LOG: 以便下一个附加到日志中。
这会在不删除源中不存在的文件的情况下进行镜像,因此即使 Hudson 设置为在 X 个月或 Y 次构建后删除构建结果,备份仍可能具有完整的历史记录......以及控制台和文件的日志,并且如果它被中断是可以恢复的。这很方便。如果您不希望它保留 Hudson 已删除的文件,您可以使用 /MIR 而不是 /E。
我确信其他平台上也存在类似的可靠副本或镜像工具。如果操作正确,Ant 可能就足够了。
有很棒的ThinBackup插件。
它仅备份系统配置和作业配置,而不是整个 HUDSON_HOME 目录,并具有类似 cron 的调度。性感!
我会使用标准的企业服务器备份解决方案来管理它。
或者用 BackupPc 之类的东西自己动手。
或者将配置文件检查到您的版本控制系统中。
除了 Backup 插件之外,还有 ThinBackup 插件仅备份配置文件(适用于Hudson或Jenkins)
我个人喜欢通过一个系统进行所有系统备份,该系统通常最终是一个 shell 脚本。我为此编写了一个 Jenkins 特定脚本(也适用于 Hudson)。有关更多信息,请参阅https://bitbucket.org/toomasr/jenkins-stuff/src。
我正在使用 Thinbackup,它支持完整备份和差异备份,您可以使用类似 cron 作业的语法来安排它运行备份的时间。它只备份关键配置,因此不需要太多空间。
在以下位置查看更多详细信息: https ://wiki.jenkins-ci.org/display/JENKINS/thinBackup