与哈德森持续集成的工作流程是什么?

时间:2010-04-11 13:48:54

标签: continuous-integration hudson

我今天被提到哈德森。

之前我听说过持续集成,但我不知道ci-server是什么。

Hudson在Ubuntu中安装非常简单,几分钟后我就设法建立了它的实例。

但我不太了解ci-server的工作流程,或者我该如何使用它呢?

如果你有关于ci的经验,请告诉我,提前谢谢。

编辑:

我目前正在使用 Mercurial 作为我的 SCM ,我想知道在 Hudson 中使用它的正确方法是什么。

我已经安装了 Hudson Mercurial插件,我用本地存储库创建了一个新作业。当我在存储库中提交时,Hudson作业是使用最新版本的源代码构建的。

如果我使用的是远程存储库,那么工作流程是什么样的?

是否类似以下内容?

  1. 使用存储库
  2. 设置Hudson作业
  3. Developer制作存储库的本地克隆
  4. 开发人员提交和推送更改
  5. 使用传入变更集进行远程存储库更新
  6. 运行Hudson版本
  7. 可能会有一些我误解的东西,请帮我指出。

2 个答案:

答案 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个)因为不兼容而变质。我现在做两件事:

  1. 我从未将我团队的Hudson服务器升级到最新最好的服务器。我通常只在有重要的新功能或错误修复时进行升级。
  2. 我现在有一个基本的Hudson实例,我的所有插件都在虚拟机上设置了一些虚拟构建,我会在公共服务器上执行之前测试所有新的升级。