【问题标题】:Build server polling vs. event-driven builds构建服务器轮询与事件驱动构建
【发布时间】:2010-06-16 19:24:52
【问题描述】:

为什么构建服务器轮询更改而不是 SVN 触发一个事件(或提交后步骤)来告诉构建服务器开始构建?轮询更改似乎非常低效,尤其是当项目数量增加并且轮询周期设置为非常低的值(例如,30 秒)时。

【问题讨论】:

标签: svn build-process hudson build-server


【解决方案1】:

轮询更改似乎非常低效,尤其是当项目数量增加且轮询周期设置为非常低的值(例如,30 秒)时。

轮询效率低下,而且根本无法扩展。如果你的 VCS 支持 post-commit 钩子,你应该更喜欢这种机制。 Hudson 公开一个 URL 以触发构建,从提交后脚本中获取它(并配置适当的安静期)。

【讨论】:

    【解决方案2】:

    Hudson 还支持通过提交后触发器构建。见:
    http://wiki.hudson-ci.org/display/HUDSON/Subversion+Plugin

    提交后挂钩

    Hudson 可以轮询 Subversion 用于更改的存储库,以及 这是相当有效的,这可以 每分钟只发生一次, 所以你可能仍然需要等待一个完整的 在 Hudson 检测到变化前一分钟。

    为了减少这种延迟,您可以设置一个 提交提交钩子,以便 Subversion 存储库可以随时通知 Hudson 对该存储库进行了更改。 为此,请输入以下脚本 在你的提交后文件中

    。 . .

    (有适用于 Linux/Windows 的示例。)

    【讨论】:

      【解决方案3】:

      通常构建计划在指定的时间间隔开始,例如每天凌晨三点。可以放置一些逻辑来查看是否有更改,然后只构建项目,但通常他们不检查并且每天都进行构建(每晚构建)

      至于你的建议是好的,我想说在每次提交时开始构建看起来并不可行。很多时候,开发人员不会一次性提交他们的更改,而是更喜欢增量签入。此外,它还可以让您高枕无忧地知道构建过程何时开始,以便您至少有机会在错误提交的情况下进行整理。根据您的建议,错误的提交会导致错误的构建。

      【讨论】:

      • 首先,持续集成意味着构建持续,最终在每次更改之后进行,而不仅仅是每天一次(所谓的每日构建)。然后,Hudson 有一个静默期,允许在提交后延迟构建(Hudson 将在触发构建之前等待 N 秒)。最后,我不得不说,做非原子提交是一种非常糟糕的做法。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-12
      • 2019-06-18
      • 1970-01-01
      • 2010-11-13
      • 2012-01-03
      • 2016-03-20
      相关资源
      最近更新 更多