【问题标题】:Continuous Integration for GWTGWT 的持续集成
【发布时间】:2014-12-09 05:43:56
【问题描述】:

我们使用 GWT 作为我们的主要前端技术。

我们使用 Bamboo 作为我们的构建服务器和 GIT 作为我们的源代码管理工具。

我们的应用程序非常庞大,分为不同的模块。但是在具有 4 GB RAM 的本地开发人员机器上编译仍然需要大量时间。

问题是:

作为持续集成的一部分,我们是否应该在本地开发人员机器上构建 GWT 代码?如果是,那么应该采取什么方法来加快构建过程?为开发人员构建 GWT 企业应用程序的最佳实践是什么?

提前感谢您的帮助。

问候,尼拉吉·萨洛特

【问题讨论】:

    标签: gwt continuous-integration bamboo


    【解决方案1】:

    1.- 我们是否应该在本地开发者机器上构建 GWT 代码?

    是的,必须设置您的项目,以便可以在任何机器上构建一个单一的订单,我的意思是运行ant buildmvn package 等(取决于您的构建系统)。这保证了任何开发人员都可以在她喜欢的操作系统中构建和试验项目,并且 CI 系统能够测试和构建集成和生产工件。

    2.- 如果是,那么应该采取什么方法来加快构建过程?

    您必须配置您的环境,以便只有 CI 服务器构建的工件才能投入生产。没有什么特别的,只是为您的团队规定了一些规则和约定,因此项目构建不依赖于任何特定的 IDE 或操作系统配置。

    3.- 为开发人员构建 GWT 企业应用程序的最佳实践是什么?

    GWT 是 java,您为 Java 项目阅读的任何通用实践都适用于 GWT:稳定的构建系统、针对您的代码运行高质量的代码工具、使用 CI 及早发现缺陷以及大量的测试。

    4.- 其他建议

    与测试相关,由于客户端代码运行测试很慢,您应该考虑使用 MVP 模式,因此应用程序代码几乎都在 Model 和 Presenter 类中,您可以在 JVM 中运行这些单元测试。然后信任经过良好测试的小部件来实现您的视图,因此您不必对它们进行单元测试。如果您创建自己的小部件,请考虑使用 UIbinder 来制作基于其他小部件或纯 html 的组合。对于包含大量 java 代码的小部件,您应该使用 GWTTestCase 对其进行测试。您的 JVM 测试应该非常快,因此当开发人员在任何交互中运行它们时,GWTTestCases 和集成测试都可以通过 CI 运行。

    如果您不进行结对编程,您可以考虑安装像 gerrit、IMO 这样的代码审查系统,代码审查是基础。通过代码审查,您可以在补丁进入大师之前对其进行测试。

    与开发者周期相关,请尝试在 gwt-2.7.0 中使用 super-dev-mode。教您的开发人员如何在 Chrome 中调试客户端代码(它完全支持源映射),并告诉他们在其他浏览器中的调试限制,以便他们使用其他浏览器仅检查您的应用程序是否在所有平台上运行。不鼓励使用经典的开发模式,因为它已停产。您可以尝试使用新的 SDBG 插件将 super-dev-mode 与 eclipse 调试器集成。

    【讨论】:

    • 谢谢。所以这意味着开发人员应该首先在他们的本地机器上构建源代码,然后再将一些东西推送到 CI 服务器将从那里获取的主 repo 上。但是问题来了,我们如何解决 GWT 的性能问题?我尝试使用 GWT 2.6 和超级开发模式,但速度太慢了。这里有什么建议吗?是否建议使用 GWT 2.7 服务器开发模式来解决性能问题?
    • 是的,2.7 要快得多。关于。在推送之前在本地构建:这是您必须做出的选择,但它确保了更清晰的提交历史。如果可以,插入您的 CI 以构建代码审查(如果您在提交/合并之前进行审查,您应该 IMO),以便开发人员可以推送审查/推送到专用分支,并且 CI 服务器在更改之前构建它合并到master/trunk。在此期间,开发人员可以开始处理其他任务,并在构建失败时切换回前一个任务(不会影响其他开发人员,因为它尚未合并)。实际上,这里没有特定于 GWT 的内容。
    • 我的意思是开发人员应该在她的本地运行所有 JVM 测试,这将保证大约 70-80% 的应用程序代码可以工作。但是由于大多数开发人员喜欢在浏览器中查看应用程序,他们可以在 superdev 模式下运行它,正如 Thomas 所说,它在 2.7 中非常快,刷新 UI 应该在第一次花费不到几秒钟的时间内重新编译大型应用程序虽然有一段时间。但他们不必在本地产生任何战争或优化 JS。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-07
    • 2019-06-15
    • 2021-01-14
    • 1970-01-01
    • 2015-04-20
    相关资源
    最近更新 更多