2

Hudson CI 服务器显示稳定的“天气”,这很酷。它允许一个项目构建基于另一个项目的成功构建而开始。但是,您如何使第二个项目额外依赖于第一个项目的多个构建的稳定性?

具体来说,如果项目“integrate”与版本 8.3.4.1233 已成功构建和测试至少 8 次(连续成功),则项目“stable_deploy”只需启动以将版本提升为“稳定”。在那之前,它仍处于集成模式。

重要提示:对此的一个重要警告是,一组 Hudson 项目被用作处理每个新版本直至发布的“管道”。因此,一个项目可能连续成功构建了 8 次,但最新版本 8.3.4.1233 可能只是最近的 2 次构建。在此之前的版本可能是较早的版本。

我们愿意完全重组它,但管道的想法似乎大大减少了手动项目创建和删除的数量。有没有更好的方法来跟踪版本发布“管道”?特别是,由于对旧版本的修复或补丁,我们将在未来同时在此管道中拥有多个版本。除了为每个版本创建新的管道项目之外,我们还没有看到如何做到这一点,这确实很麻烦。

以下是一些背景细节:

TickZoom 应用程序有一些非常完整的单元测试,其中一些模拟实时交易环境。除此之外,TickZoom 还巧妙地利用并行化来利用多核计算机。不用说,在新版本的开发过程中,在集成测试过程中可能会出现稳定性问题,通过反复运行构建和自动测试会发现这些问题。连续 8 次干净地构建和测试的版本,加上经过用户实际测试的版本可以被视为“稳定”并升级到稳定分支。

我们的 Hudson 项目如下所示:

test - 仅用于测试构建,零用户可见性。integration_deploy - 促进测试项目构建以集成分支,并使其可供公众用于 UA 测试。集成 - 重复构建集成分支以确定它是否足够稳定以提升到稳定分支。这会在每晚每小时运行构建和测试。stable_deploy - 将集成项目构建提升到稳定分支,并将其公开给想要最新和最好的用户。stable - 每晚构建一次 stable 分支。经过 2 周的成功构建(14 个构建)后,它可以进入“候选发布版”。

依此类推......它继续“发布候选”,然后是“发布”。

4

3 回答 3

1

我可以看到通过多次连续构建成功而没有错误来证明稳定性的意义,但我建议采用稍微不同的方法来使事情变得更简单。与其尝试聚合多个构建的结果来确定是否将最新构建提升到稳定分支,不如针对同一个构建运行 8 次测试;您可以通过向测试添加重复计数参数来执行此操作,也可以在 Hudson 作业设置中多次重复测试步骤。

如果构建每次都顺利通过,您可以使用它作为网关将构建发送给您的用户进行“真实世界”测试,然后再将其提升到稳定分支。

这有几个优点;它根据您的要求使 Hudson 设置更加简单,并且使您对构建的稳定性更有信心,因为您针对相同的代码库多次运行测试,而不是每次都针对不同的代码库。

于 2010-03-22T14:57:54.640 回答
1

答案是为软件的每个新的次要版本创建一个单独的作业管道。

所以他们会是这样的。

集成_0.8.3 稳定_0.8.3 候选_0.8.3 发布_0.8.3

我们将使用 Hudson API 通过脚本为每个新版本生成作业。

推广不能完全自动化,因为除了稳定构建之外的其他因素,如用户报告的错误,可能会延迟版本通过管道移动。

真诚的,韦恩

于 2010-03-29T01:12:38.073 回答
0

我想您必须在 hudson 之外实施一些解决方案,以生成要在 Hudson 中使用的触发文件,或者使用您公司的特定规则扩展促销插件。

于 2010-03-22T15:02:22.493 回答