我今天被提到哈德森。
之前我听说过持续集成,但我不知道ci-server是什么。
Hudson在Ubuntu中安装非常简单,几分钟后我就设法建立了它的实例。
但我不太了解ci-server的工作流程,或者我该如何使用它呢?
如果你有关于ci的经验,请告诉我,提前谢谢。
我目前正在使用 Mercurial 作为我的 SCM ,我想知道在 Hudson 中使用它的正确方法是什么。
我已经安装了 Hudson 的 Mercurial插件,我用本地存储库创建了一个新作业。当我在存储库中提交时,Hudson
作业是使用最新版本的源代码构建的。
如果我使用的是远程存储库,那么工作流程是什么样的?
是否类似以下内容?
Hudson
作业
Hudson
版本可能会有一些我误解的东西,请帮我指出。
答案 0 :(得分:8)
Continuous Integration是连续“整合软件”的过程,即尽可能频繁地(最终在每组变更之后),通过获得即时反馈来避免任何大爆炸整合和所有后续问题。
要实现持续集成,首先需要自动构建软件(其中构建方式当然是编译源代码,打包它们,还要编译测试,运行测试,运行质量检查等等,任何有助于获得有关代码健康状况的反馈)。然后,您需要在特定事件(存储库中的更改,时间事件)上触发最新版本源的构建,生成报告并在发生故障时(通过邮件,推特等)发送通知。
这正是CI引擎的责任:提供触发机制,能够获取最新版本的源,运行构建,生成和发布报告,发送通知。 CI引擎确实实现了这一点。
因为运行构建是CPU和磁盘密集型的,所以CI引擎通常在专用机器上运行(如果你想构建大量项目,甚至可以在一个机器群上运行)。
现在回到你的问题。一旦你运行Hudson,配置它(管理Hudson>配置系统):设置JDK,构建工具等。然后设置 Hudson作业并按照步骤:配置源存储库的位置,构建工具,触发器,通知通道,你已经完成了(你可以做更复杂的事情,但这是一个开始)。
有关设置的更多详细信息,请检查:
答案 1 :(得分:7)
Martin Fowler's overview of continuous integration是规范参考之一。在我看来,使用自动化来确保您的代码库是健康的,这是您可以设置的最有用的东西之一。
更新很抱歉,我没有太多时间来扩展我的回复。 @Pascal_Thivent是正确的,为了有效地使用CI,您需要能够自动化构建,测试等.CI实际上是一个很好的强制功能。对我来说,如果我开始认为将构建放入Hudson会太痛苦,那么它就是那些小警示标志之一。这意味着某些事情不太对劲。
我喜欢Hudson的是它足够灵活,可以适应不同的工作流程。我们将它用于构建/单元测试和发布。它消除了许多担心某些发布程序只在一个人的环境中工作。
我不喜欢Hudson的是,当新版本打破插件时它偶尔会不稳定。我有几次升级(10个左右中有2个)因为不兼容而变质。我现在做两件事: