构建服务器最佳实践

发布于 2024-07-11 22:07:02 字数 1431 浏览 6 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

往事风中埋 2024-07-18 22:07:02

您为谷歌描述的是每个基本构建过程的作用。 特定项目可能有其他需求,例如 - 我们如何从暂存到生产部署 Web 应用程序:

  • 构建开始
  • 实时站点脱机(Apache 重定向到包含“正在建设”页面的不同目录)
  • 为生产服务器运行 SVN 更新
  • 数据库架构运行增量
  • 针对更新的源和模式运行测试
  • 如果失败:运行回滚(SVN 恢复和数据库模式撤消)
  • 站点恢复在线
  • 构建结束

What you described for google is what every basic build process does. Specific projects may have additional needs, for example - how we deploy web applications from staging to production:

  • Build start
  • Live site is taken offline (Apache redirects to different directory holding an "Under construction" page)
  • SVN update is ran for production server
  • Database schema deltas are ran
  • Tests are ran against updated source and schema
  • In case of fail: rollback is ran (SVN revert and database schema UNDO)
  • Site gets back online
  • Build ends
_畞蕅 2024-07-18 22:07:02

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

On the java platform I have tried every single major CI system there is. My tip is that paying for a commercially supported solution has been the cheapest build system I've ever seen. These things take time to maintain, support and troubleshoot. Especially with a heavy load of builds running all the time.

一场春暖 2024-07-18 22:07:02

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

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

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

  1. 代码 - 测试 - 重构(循环)
  2. 提交
  3. CI 服务器还验证您的提交

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

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

  • 您应该信任您的开发人员在提交之前进行测试
  • 如果测试花费很长时间,问题是您的缓慢测试,而不是
  • 开发人员热衷的 工作流程保持测试快速
  • 依赖 CI 服务器来运行测试会给你错误的安全感

The example workflow you give is similar to the one proposed by TeamCity. The idea being:

  1. Code
  2. Check in to "pre-test"
  3. CI server tests the "pre-commit"
  4. If (and only if) tests pass, the CI server commits the code change to the main repo

It's a religious war but I prefer:

  1. Code - Test - Refactor (loop)
  2. Commit
  3. CI server also validates your commit

Every responsible programmer should run all the tests before committing.

The main argument for the first way is that it gurantees that there is no broken code in SCM. However, I would argue that:

  • You should trust your developers to test before committing
  • If tests take to long, the problem is your slow tests, not the workflow
  • Developers are keen to keep tests fast
  • Relying on CI server to run tests give you false sense of security
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文