【问题标题】:How to set a custom version when deploying an app engine application?部署应用引擎应用程序时如何设置自定义版本?
【发布时间】:2017-06-04 13:09:46
【问题描述】:

我正在按照 Google 应用引擎标准部署应用。这是一个 Java/Kotlin 应用程序,但问题不一定特定于此。我正在使用最新的 Gradle 插件,答案可能是特定的。

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

现在必须将项目 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 官方文档 (!) 和此站点 like here 都已过时、相互矛盾或两者兼而有之(因此,请原谅我的冗长而详细的帖子)。谢谢!

【问题讨论】:

  • 你试过发布非快照版本来看看吗?
  • 您的问题听起来像是最终的解决方案:如何发布非快照版本? (看来我想发布一个“非快照”版本。这是我前段时间在某处读到的内容,但现在找不到了。)无论如何,感谢您查看我的问题!跨度>
  • 您从版本末尾删除了-SNAPSHOT,因此最终应用不再是快照版本。 version = '1.2.0-SNAPSHOT' 变为 version = '1.2.0'
  • 好的,为了确定,我试过了。但这只是 jar/war 文件的版本。我说的是应用引擎自动分配给上传的类似快照的版本号/字符串,不出所料,它不受更改的影响。

标签: java google-app-engine gradle


【解决方案1】:

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

【讨论】:

  • 这需要在 gCloud 文档中明确定义,因为它似乎是一个基本配置。感谢揭秘!关于 Ktor 的实现,我创建了自己的 post
猜你喜欢
  • 2020-11-02
  • 1970-01-01
  • 1970-01-01
  • 2016-02-25
  • 1970-01-01
  • 2015-01-08
  • 2017-03-23
  • 2018-06-14
  • 1970-01-01
相关资源
最近更新 更多