我很高兴使用 Hudson(现在的 Jenkins)几年了,我喜欢这个系统的总体态度 - 这确实是一个很好的程序 - 但重点不在我需要运行的一件事上好吧。
如果我们的构建服务器发生问题,并且我们需要从备份磁带(整个工作区)重建它,那么使用 Jenkins 并不容易做到这一点。由于我们本身不依赖任何 Jenkins 特定的功能,因此我正在考虑其他 CI 系统是否有更好的方法。
基本上,当从 git 中提取时,我们有多个彼此相邻的 Eclipse 项目。每个构建条目都指向随后构建的项目之一中的 ant 脚本。我们需要对所使用的 Ant 和 Java 版本具有充分的灵活性。这可以在项目中某处的“启动配置”文件中完美地描述,因此所需要做的就是指向(甚至可能自动发现)所述启动文件。
如果也可以建立历史记录等,那就更好了,但我真的希望能够让作业重新启动并运行。
有什么建议吗?
(注释 2013-02-18:我们将构建过程迁移到 Maven。这极大地简化了 Jenkins 配置,并使这个问题不再那么重要。很高兴知道您是否可以从备份磁带轻松引导 CI 配置或scratch(基于存储在各个pom文件中的信息))
最佳答案
备份 Jenkins 相当容易。
备份所有配置文件。我有一个 Jenkins 作业,每小时运行一次,扫描任何 config.xml 更改或添加,并在我们的 Perforce 服务器中添加/更新它们。此外,如果我把配置搞得够糟糕,它还使我能够回滚到旧的配置,只需在 Perforce 中进行同步即可。
备份您的插件。我只是将 .hpi 文件再次备份到 perforce 中。这样我就不必记住我的服务器上有哪些插件,如果我需要重建它。
备份您的工作区目录。我不这样做,因为我不关心我的 CI 构建,并且我的夜间构建存储在另一台服务器上。我发现 Jenkins 副本非常非常慢,因此我将构建脚本中的所有工件/源代码复制到存档服务器,该服务器已由 IT 每晚备份(它是 san)。唯一的问题是我无法将 Jenkins 作业工件指向单独的位置并让 Jenkins 将它们链接为工件。我还没有找到一个插件可以做到这一点,而且我一直在编写的插件运行速度很慢。但这并不是太糟糕的权衡。
这三个允许我在很短的时间内恢复 Jenkins,但没有日志文件(我真的不需要它们,只要我有输出,tee.exe 就是你的 friend ),如果我的服务器死机的话。
关于java - 哪个持续集成系统最容易从备份在新机器上重新建立?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6291530/