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

2023-12-25

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

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

项目ID我的项目现在必须指定为通用 glcoud 命令行界面配置的一部分(可以通过查看gcloud config configurations list)。 Gradle 插件似乎可以很好地从那里获取它。

对于版本 1-2-0但是,我不知道在哪里以及如何设置它。因此,在部署时我总是会得到一个新的默认值,例如20170604t124930,以及许多冗余的应用程序版本。

对于我之前使用的 Python 应用程序appcfg(或者是一个glcoud命令?)进行部署,我指定了项目 ID 和版本作为命令行参数。 Gradle 插件必须在其他地方找到(或没有找到)此信息。 Gradle 文件的version = '1.2.0-SNAPSHOT'当然只是针对生成的jar/war。网络上的许多建议、Google 官方文档 (!) 和本网站像这儿 https://stackoverflow.com/q/40071171/893774已经过时、矛盾或两者兼而有之(因此,请原谅我冗长而详细的帖子)。谢谢!


简单的答案可以在底部找到App Engine Gradle 插件任务和属性 https://cloud.google.com/appengine/docs/standard/java/tools/gradle-reference。只需将其添加到build.gradle:

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

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

appengine {

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

我的困惑似乎源于这样一个事实:有旧的 Gradle 插件和新的插件,并且两者之间的处理确实发生了很大变化 https://cloud.google.com/appengine/docs/standard/java/tools/migrate-gradle。特别是,新插件更加依赖于glcoud配置。该插件按原样允许设置项目 ID (appengine.deploy.project)在 Gradle 配置中,但是,如果未在那里指定,则仅从可用项目列表中获取默认值(命令行:gcloud config list project- 老人appcfg不再使用)。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

部署App Engine应用程序时如何设置自定义版本? 的相关文章

随机推荐

  • Pycharm 中的远程开发 - 无需本地副本

    我知道如何在 Pycharm 中设置远程解释器 到目前为止远程开发进展顺利 但在某些情况下 我无法在我处理商业问题的计算机上保存文件的本地副本 有没有办法在 Pycharm 中远程开发WITHOUT有脚本和其他项目文件的本地副本吗 我刚刚遇
  • IE 中的 JavaScript 分析器

    有谁知道在 IE 中分析 JavaScript 的工具吗 可用列表 IE8 http blogs msdn com ie archive 2008 09 11 introducing the ie8 developer tools jscr
  • 录制直播音频

    我实际上正在制作一个应用程序 它必须在 iPad 上播放和录制来自互联网的流媒体音频 音频流已经完成 我很快就要进入录音部分 我不知道如何继续 你能给我一个提示吗 主意 它必须在播放的同时录制为 AAC 或 MP3 Thanks 您需要使用
  • 如何在 TypeScript 中通过 AMD 请求 jquery

    我的 TypeScript 模块如何需要 jquery AMD 模块 例如 假设脚本的目录结构如下所示 jquery 1 8 2 js jquery d ts module ts require js 我希望从 module ts 生成的
  • 为什么它不是尾递归?

    我有以下代码 我不明白为什么它不是尾递归 override fun drop n Int List a if n 0 this else tail drop n 1 而这是尾递归 fun drop n Int List a tailrec
  • 如何在 Python 中比较数组中的值 - 找出两个值是否相同

    我基本上有一个包含 50 个整数的数组 我需要找出这 50 个整数是否相等 如果相等 我需要执行一个操作 我该怎么做呢 据我所知 Python 中目前没有一个函数可以做到这一点 如果你的意思是你有一个列表并且你想知道是否有重复的值 那么从列
  • 并发、并行和异步方法有什么区别?

    并发是指两个任务在不同的线程上并行运行 但是 异步方法并行运行 但在同一个线程上 这是如何实现的 另外 并行性怎么样 这3个概念有什么区别 并发和并行实际上与您正确推测的原理相同 两者都与同时执行的任务有关 尽管我想说并行任务应该是真正的多
  • Wpf:在多个控件上应用自定义样式的工具提示

    我正在使用 WPF 应用程序 我创建了一个自定义控件库 在其中自定义了所有控件 这意味着添加了一些功能并重新设计了它们的样式 我也以同样的方式重新设计了工具提示 我在其他项目中使用这个自定义库 除了工具提示之外 一切都工作正常 工具提示样式
  • 如何使用两个按钮从 api 制作日期和时间列表水平视图,以通过颤动滚动列表视图

    我在颤振日期和时间页面视图中 当用户单击时间时 将单击的时间设置为灰色 并将其他时间设置为透明颜色 在此图片中您可以看到所选日期 https i stack imgur com jQ8dd jpg请注意 用户可以再次重新选择 以便旧的选择设
  • 如何转换 JToken

    我有一个值为 1234 的 JToken 如何将其转换为整数值 如 var totalDatas 1234 var tData jObject totalDatas int totalDatas 0 if tData null totalD
  • Pandas 中的plot 和iplot 有什么区别?

    在 Jupyter Notebook 中显示图形时 plot 和 iplot 有什么区别 我刚刚开始在 Python 3 6 6 中使用 iplot 我认为它使用了 Cufflinks 包装器来运行 Matplotlib 这似乎是我用简单的
  • MongoDB 数组 - 原子更新或推送元素

    我在 MongoDB 中有以下文档 id ObjectId 521aff65e4b06121b688fabc user abc servers name server1 cpu 4 memory 4 name server2 cpu 6 m
  • 如何在MVC单元测试类中模拟Request.Files[]?

    我想在 MVC 单元测试中测试控制器方法 为了测试我的控制器方法 我需要一个长度为 1 的 Request Files 集合 我想模拟 Request Files 因为我在控制器方法渲染的视图上使用了文件上传控件 任何人都可以建议我如何在单
  • 如何使用GD检查GIF是否具有透明度?

    我找到了问题如何使用GD检查图像是否具有透明度 https stackoverflow com q 5495275但答案都是针对 PNG 文件的 是否有解决方案可以使用 GD 扩展在 PHP 中检查 GIF 图像是否具有透明度 我假设 al
  • 依赖算法 - 找到要安装的最小软件包集

    我正在研究一种算法 其目标是找到安装包 X 的最小包集 我将通过一个例子更好地解释 X depends on A and E or C A depends on E and H or Y E depends on B and Z or Y
  • 打开新选项卡时使用 JSF 受保护视图时出错

    我已经设置了我的 Web 应用程序 通过在 faces config protected views 中列出各个页面来防止 CSRF 这在本地运行时效果很好 但在部署到服务器后 我最终在打开页面链接时收到这些错误 javax faces a
  • brew install python3 没有安装 pip3

    我使用 homebrew 安装了 python3 但它没有安装 pip3 或者我应该说它已安装但它无法识别该命令 这是我所做的 brew install python3 这安装了 python3 但最后抛出了一个错误 说它无法链接 pyth
  • 如何通过缓存制作离线地图(使用leaflet OSM)?

    我正在尝试通过浏览器中的缓存 IndexedDB 制作离线地图 我理解的概念是 当连接到互联网时 我首先下载并存储地图的图块 然后我必须逻辑上离线加载图块 但是 我无法弄清楚 如何存储它们以及如何逻辑地再次加载它们 我被困在这里了 我正在使
  • 为什么CameraX.bindToLifecycle在1.0.0-alpha05中不支持三种情况?

    我正在学习CameraX API CameraXBasic是一个office示例代码 代码A基于CameraFragment kt https github com android camera samples blob master Ca
  • 部署App Engine应用程序时如何设置自定义版本?

    我正在部署一个符合 Google 应用引擎标准的应用程序 这是一个 Java Kotlin 应用程序 但问题不一定是特定于此的 我正在使用最新的 Gradle 插件 答案可能是特定于此的 就像这些年来一样 我指定了一个项目 ID 比方说我的