Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 是否有一个自动化/脚本化Google AppEngine Java部署的解决方案?_Google App Engine - Fatal编程技术网

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

Google app engine 是否有一个自动化/脚本化Google AppEngine Java部署的解决方案?,google-app-engine,Google App Engine,我想在AppEngine Java上自动/脚本部署我的应用程序。据我所知,还没有人提出一个好的可重用的开放式解决方案。。。还是有 理想情况下,它将执行以下任务: 将war文件夹复制到临时目录 运行任何需要运行的任务(在这一步中,我们会修改JS代码) 运行“appcfg资源\u限制\u信息战”以通过google验证并存储cookie。(因此:) 调用“appcfg更新”以上载新版本,使用当前日期时间作为版本(2012-01-01-1411) 通过点击url来预热实例 如果#5成功,则调用“appc

我想在AppEngine Java上自动/脚本部署我的应用程序。据我所知,还没有人提出一个好的可重用的开放式解决方案。。。还是有

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

  • 将war文件夹复制到临时目录
  • 运行任何需要运行的任务(在这一步中,我们会修改JS代码)
  • 运行“appcfg资源\u限制\u信息战”以通过google验证并存储cookie。(因此:)
  • 调用“appcfg更新”以上载新版本,使用当前日期时间作为版本(2012-01-01-1411)
  • 通过点击url来预热实例
  • 如果#5成功,则调用“appcfg set_default_version”切换到新版本。如果没有,重复#5直到完成
  • 自动删除旧版本以保持整洁。(不可能,功能请求:)

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

    这是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>
    

    您可以使用他们的Gradle或Maven插件

    格拉德尔:

    马文:

    这似乎是一个非常定制的解决方案;你检查过Ant或Maven吗?你想建议一个不那么定制的解决方案来解决这个问题吗?Ant和Maven是工具,而不是解决方案。我不需要知道使用什么工具,我需要知道是否有人能很好地解决这个问题。工具是不相关的。你应该自己写这篇文章,并把它作为一个答案发布,我肯定会投赞成票。祝你好运是的。我们现在已经实现了上述大部分步骤,作为Ant构建的一部分,并且工作得非常好。我会尽快在这里把它记录下来。