Google App Engine:如何执行远程部署到开发者应用服务器?

时间:2012-10-12 00:47:27

标签: google-app-engine deployment ant

我正在为我的GAE应用设置“QA环境”。此QA环境将只是我家庭网络上的一个小型服务器,具有专用IP地址。我正在编写一个Ant脚本来检查我的SVN仓库中的项目,在我的构建服务器上构建它,然后“远程”(通过我的家庭局域网)部署到QA应用服务器。

使用Tomcat,我只需将scp网站存档到机器的webapps/目录,并且因为它可以配置为热部署,这就是我通常需要的QA部署。 / p>

但我是GAE的新手,所以我没有看到如何通过Ant实现这样的远程部署。我能想到的最好的(虽然有点复杂)是:

  1. 在构建服务器上签出并构建WAR,就像我通常那样
  2. scp WAR到QA机器上的某个临时目录;说192.168.1.55:/opt/gae/staging
  3. 在该计算机上运行一个轻量级RESTful Web服务(可能由Tomcat或Jetty托管),监听客户端是否遇到某个API,比如http://192.168.1.55:8080/GaeRemoteApi/deploy;当请求处理程序获取对此URL的请求时,它会启动shell命令以将WAR复制到正确的目录中,然后执行appcfg.sh -upload以将WAR实际部署到我的QA应用服务器
  4. 我很确定我可以在一两天内完成这项工作,但是想知道GAE是否提供了更容易(烘焙)的解决方案;或者如果一双新鲜的眼睛能想到更简单的东西。提前谢谢!

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

我认为你应该保持简单:

由于您使用的是Ubuntu,因此您可以编写一个shell脚本:

  1. ssh到远程服务器
    • 停止当前的gae dev appserver
    • 重命名现有的war目录
  2. 将新部署scp到QA服务器war目录
  3. ssh到QA服务器并启动gae dev appserver
  4. 您可以使用:http://sumedha.blogspot.com.au/2008/06/how-to-call-shell-script-from-ant.html

    从ant调用shell脚本

    停止开发者应用程序服务器:

    killall -e ./appengine-java-sdk/bin/dev_appserver.sh
    

    运行dev appserver:

    nohup ./appengine-java-sdk/bin/dev_appserver.sh you/war/directory &