如何在部署应用引擎应用时设置自定义版本?

时间:2017-06-04 13:09:46

标签: java google-app-engine gradle

我正在将应用部署到Google应用引擎标准。它是Java / Kotlin应用程序,但问题并不一定是特定的。我正在使用最新的Gradle插件,答案可能是特定的。

与所有这些年一样,我指定了一个项目ID,让我们说 MyProject ,以及一个版本号/字符串,让我们说 1-2- 0 的。历史上,这两条信息都会进入appengine-web.xml文件(Python的app.yaml)。它们仍然可以设置在那里,但随后被忽略,因为部署过程突出显示。

现在必须将项目ID MyProject 指定为常规glcoud命令行界面配置的一部分(可以通过gcloud config configurations list查看)。 Gradle插件似乎从那里捡起来就好了。

但对于版本 1-2-0 ,我无法弄清楚在何处以及如何设置它。因此,在部署时,我总是会得到一个新的默认值20170604t124930,以及许多冗余的应用版本。

对于我使用appcfg(或者它是glcoud命令?)部署的先前Python应用程序,我将项目ID和版本指定为命令行参数。 Gradle pluging必须在其他地方找到(或没有找到)这些信息。 Gradle文件的version = '1.2.0-SNAPSHOT'当然只适用于生成的jar / war。网络上的许多建议,官方Google文档(!)和此网站like here都已过时,相互矛盾或两者兼而有之(因此,您可以原谅我冗长,相当详细的帖子)。谢谢!

1 个答案:

答案 0 :(得分:2)

简单的答案可以在App Engine Gradle Plugin Tasks and Properties的底部找到。只需将其添加到build.gradle

即可

appengine.deploy.version = '1-2-0'

或者,作为更广泛的应用引擎插件配置的一部分:

appengine {

  deploy {
    ...
    version = '1-2-0
  }
}

我的困惑似乎源于这样一个事实:有一个旧的Gradle插件和新的插件,handling did change quite a bit between the two。特别是,新插件更依赖于glcoud配置。插件按原样允许在Gradle配置中设置项目ID(appengine.deploy.project),但是,如果没有在那里指定,则只从可用项目列表中获取默认值(命令行:gcloud config list project - 旧的appcfg不再使用了。

但是,当Gradle配置中缺少该版本时,环境中的版本没有此类默认值。在这种情况下,每次部署都会采用新的时间戳字符串。