部署App Engine应用程序时如何设置自定义版本?

问题描述 投票:0回答:2

我正在部署一个符合 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 插件必须在其他地方找到(或没有找到)此信息。 Gradle 文件的
version = '1.2.0-SNAPSHOT'
当然只是针对生成的 jar/war。网络上的许多建议、官方 Google 文档(!)和这个网站像这里都是过时的、矛盾的,或者两者兼而有之(因此,请原谅我冗长、相当详细的帖子)。谢谢!

java google-app-engine gradle
2个回答
2
投票

简单的答案可以在 App Engine Gradle 插件任务和属性 的底部找到。只需将其添加到

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 配置中缺少版本时,环境中的版本没有这样的默认值。在这种情况下,每次部署都会采用新的时间戳字符串。


0
投票

你可以写 在 gradle.properties 里面

projectVersion=1.0

以及 build.gradle 内部

allprojects {
    def hash = 'git rev-parse --short HEAD'.execute().text.trim() //tag
    version = "$projectVersion.$hash"
}
© www.soinside.com 2019 - 2024. All rights reserved.