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

我正在将应用部署到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必须在其他地方find(或不find)这个信息。 Gradle文件的version = '1.2.0-SNAPSHOT'当然就是生成的jar / war。 网络上的许多建议,官方的Google文档(!)和这里的这个网站都是过时的,矛盾的,或者两者兼而有之( 因此,你们可以原谅我冗长的,相当详细的post )。 谢谢!

简单的答案可以在App Engine Gradle Plugin任务和属性的底部find。 只需将其添加到build.gradle

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

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

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

我的困惑似乎源于这样一个事实,那就是旧的Gradle插件和新的插件, 处理在两者之间确实有些改变 。 特别是,新的插件更依赖于glcoud配置。 这个插件允许在Gradle配置中设置项目ID( appengine.deploy.project ),但是如果没有在那里指定,只需要从可用项目列表(命令行: gcloud config list project – – 旧的appcfg不再使用)。

但是,在Gradle配置中缺少版本时,环境中的版本不存在此类缺省值。 在这种情况下,每个部署都会采用新的时间戳字符串。