繁体   English   中英

是否有自动/脚本化Google AppEngine Java部署的解决方案?

[英]Is there a solution for automated / scripted Google AppEngine Java deployment?

我想在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

我可以/将自己写这个,但我想知道是否有其他人之前已经走过这条道路或想要合作一个很多人可以使用的解决方案。

这是蚂蚁目标的核心,它们对我们来说非常有效。 上面步骤中没有实现的唯一部分是#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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM