4

我听说谷歌有一些这样的自动化过程:

  • 当您签入时,您的代码会签入一个临时位置。
  • 它是建造的。
  • 样式检查运行。
  • 测试运行。
  • 如果没有问题,代码将转到实际存储库。
  • 您会收到一封电子邮件,其中包含测试结果、性能图表、样式检查结果以及您的代码是否已签入。

因此,如果您想了解您是否破坏了某些东西,或者您预期的性能提升是否发生了,您只需签入并收到一封电子邮件,告诉您您需要了解的内容。

您最喜欢的构建服务器最佳实践是什么?

4

3 回答 3

5

你为谷歌描述的是每个基本构建过程所做的。特定项目可能有额外的需求,例如——我们如何将 Web 应用程序从登台部署到生产:

  • 构建开始
  • 实时站点脱机(Apache 重定向到包含“正在建设”页面的不同目录)
  • 为生产服务器运行 SVN 更新
  • 运行数据库模式增量
  • 针对更新的源和模式运行测试
  • 如果失败:运行回滚(SVN 还原和数据库模式 UNDO)
  • 网站重新上线
  • 构建结束
于 2009-01-07T21:02:43.153 回答
1

在 java 平台上,我尝试了所有主要的 CI 系统。我的建议是,为商业支持的解决方案付费是我见过的最便宜的构建系统。这些事情需要时间来维护、支持和排除故障。尤其是在一直运行大量构建的情况下。

于 2009-01-07T21:14:28.387 回答
1

您提供的示例工作流程类似于TeamCity提出的工作流程。这个想法是:

  1. 代码
  2. 签到“预测试”
  3. CI 服务器测试“预提交”
  4. 如果(且仅当)测试通过,CI 服务器会将代码更改提交到主存储库

这是一场宗教战争,但我更喜欢:

  1. 代码-测试-重构(循环)
  2. 犯罪
  3. CI 服务器也会验证你的提交

每个负责任的程序员都应该在提交之前运行所有测试。

第一种方式的主要论点是它保证 SCM 中没有损坏的代码。但是,我认为:

  • 您应该信任您的开发人员在提交之前进行测试
  • 如果测试需要很长时间,问题在于您的测试速度较慢,而不是工作流程
  • 开发人员热衷于保持快速测试
  • 依赖 CI 服务器运行测试会给你错误的安全感
于 2010-07-28T09:39:35.287 回答