gpt4 book ai didi

google-app-engine - 是否有用于自动/脚本化 Google AppEngine Java 部署的解决方案?

转载 作者:行者123 更新时间:2023-12-04 20:06:19 42 4
gpt4 key购买 nike

我想在 AppEngine Java 上自动化/编写我的应用程序的脚本部署。据我所知,还没有人想出一个很好的可重复使用的开放式解决方案……或者有吗?

理想情况下,它会执行以下任务:

  1. 将 war 文件夹复制到临时目录。
  2. 运行任何需要运行的任务(我们在这一步中丑化了我们的 JS 代码)。
  3. 运行“appcfg resource_limits_info war”以向 google 进行身份验证并存储 cookie。 (因为这个:http://code.google.com/p/googleappengine/issues/detail?id=7653)
  4. 调用“appcfg update”上传新版本,使用当前日期时间作为版本 (2012-01-01-1411)。
  5. 通过点击 http://2012-01-01-1411.appid.appspot.com 来预热实例网址。
  6. 如果#5 成功,调用“appcfg set_default_version”切换到新版本。如果不是,请重复 #5 直到它出现。
  7. 自动删除旧版本以保持整洁。 (不可能,功能请求:http://code.google.com/p/googleappengine/issues/detail?id=2723)

我可以/将自己写这篇文章,但我想知道是否有其他人之前已经走上这条路或者愿意合作开发一个可供很多人使用的解决方案。

最佳答案

这是 Ant 目标的核心,对我们来说效果非常好。上述步骤中唯一未实现的部分是 #7,因为 AppEngine 尚无法实现。我们发现使用日期作为版本号对于跟踪部署非常方便。

<target name="auth">
<java classname="com.google.appengine.tools.admin.AppCfg" inputstring="${appengine.pass}" fork="true">
<sysproperty key="appengine.sdk.root" value="${appengine.sdk.dir}" />
<classpath>
<fileset dir="${appengine.sdk.dir}/lib" includes="**/*.jar" />
</classpath>
<arg value="--email=${appengine.email}" />
<arg value="resource_limits_info" />
<arg value="war" />
</java>
</target>

<target name="optimize">
<delete dir="${staging.dir}" />
<mkdir dir="${staging.dir}" />

<copy todir="${staging.dir}">
<fileset dir="war">
<exclude name="WEB-INF/classes/**" />
<exclude name="WEB-INF/appengine-generated/**" />
<exclude name="include.js" />
<exclude name="js/app/**" />
<exclude name="js/tmpl/**" />
</fileset>
</copy>
<jar destfile="${staging.dir}/WEB-INF/lib/classes.jar" basedir="${classes.dir}" />

<exec executable="./scripts/optimize.sh">
<env key="PATH" value="/usr/bin:/bin:/usr/local/bin" />
</exec>
</target>

<target name="deploy-prod" depends="auth, optimize">
<property name="appid" value="voost0" />
<tstamp>
<format property="vnum" pattern="yyyy-MM-dd-HHmm"/>
</tstamp>

<echo message="Deploying to version: ${vnum}" />

<appcfg action="update" war="${staging.dir}">
<options>
<arg value="--application=${appid}" />
<arg value="--version=${vnum}" />
</options>
</appcfg>

<get src="http://${vnum}.${appid}.appspot.com/ping" dest="${build.dir}/warmup-garbage" verbose="true" />
</target>

<target name="deploy-prod-switch" depends="deploy-prod">
<appcfg action="set_default_version" war="${staging.dir}">
<options>
<arg value="--application=${appid}" />
<arg value="--version=${vnum}" />
</options>
</appcfg>
</target>

关于google-app-engine - 是否有用于自动/脚本化 Google AppEngine Java 部署的解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11487793/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com