【问题标题】:Automatic deployment in GAE from subversion trunk从颠覆主干在 GAE 中自动部署
【发布时间】:2011-11-01 17:07:25
【问题描述】:

我的团队正在开发一个 Java 应用程序,该应用程序将部署在 Google App Engine(GAE) 上。目前我们使用eclipse-plugin在GAE中构建和部署代码。

但是,我想自动化(通过使用 cron 或 svn-post-commit 钩子)这个过程,以便在每次 scrum 会议之前将 subversion 主干中的源代码自动部署到 GAE 中。我希望这最终会减轻我们程序员的负担,并帮助他们更多地关注应用程序逻辑。

如果 Java+GAE+Subversion 可行,请告诉我

提前致谢

【问题讨论】:

  • 我不推荐自动部署。可能总是有一个不应该部署的提交..
  • 我做了一个小脚本来自动部署到 GAE。此脚本更新工作副本、构建应用程序并使用 Ant 在 GAE 中部署它。它还将向开发人员发送一封电子邮件,其中包含在此过程中收集的所有信息。我在 GAE 中使用了 Ant 文档中提供的 build.xml。

标签: java svn google-app-engine


【解决方案1】:

这是可能的。这就是我对我的项目所做的。我还应该注意,这个问题与Possible to integrate Google AppEngine and Google Code for continuous integration? 中的另一个 stackoverflow 问题相似,它提供了几个可以使用的好答案。

话虽如此,我个人的做法是为eclipse项目设置ant build,并使用Jenkins从Subversion自动更新代码并使用ant build进行构建。

然后您可以使用 google 提供的 appcfg 和宏添加目标,以将您构建的项目上传到 Google App Engine。有关在 Google App Engine 上使用 Ant 的更多详细信息,请参阅here

使用 Jenkins 等持续集成工具的一个好处是,您可以使用 JUnit 或您的个人测试风格添加自动化单元测试。从长远来看,这将为您的团队省去很多麻烦。

【讨论】:

    【解决方案2】:

    我在 GAE 中使用了 python,并且有一个 appcfg.py 脚本,可以使用一个命令将代码部署为 -

    python appcfg.py 更新

    这让我觉得对于 Java 来说,也必须有一些来自 Google 的脚本来部署应用程序。如果有,那么您要做的必须是一个简单的命令,该命令用于 cron 作业。

    【讨论】:

    【解决方案3】:

    您的团队应该使用Continuous Integration 工具,例如Jenkins。这也将解决您可能没有考虑过的下一个问题:它可以配置为在部署之前运行单元和集成测试。它有许多版本控制系统集成选项。

    【讨论】:

    • 感谢@pcjuzer 的建议。我们正在考虑将 Hudson 和 Junit 用于测试和 CI。但是由于编码才刚刚开始,我必须等待测试用例。顺便说一句,哈德森和詹金斯之间有什么细微的区别吗?
    • 我对 Hudson->Jenkins 的故事了解不多,但我看到的大多数项目都改成了 Jenkins。在没有测试用例的情况下使用 Jenkins 是可以的。您将构建、测试或部署脚本连接到 CI 工具的要点,它甚至会为每个 SVN 提交执行它们。 (然而,这不是最好的解决方案。)整个事情在一台服务器上运行,一个环境。因此,无论开发人员 A 或 B 在他们的桌面上是否有某些不同版本的东西,由 A 或 B 构建的版本都可能有微小的差异。另一件事是它有一个 web-GUI,其中包含许多有关已执行脚本的有用信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    相关资源
    最近更新 更多