适用于多种环境的 Google Cloud App Engine app.yaml

nic*_*ick 6 google-app-engine google-cloud-platform

目前,我有我的应用程序启动和运行时,app.yamldispatch.yaml在应用程序的根,我通过谷歌云CLI部署。

目前这很有效,但当我转向拥有dev,stagingprod环境时,我可以看到它不再可行。

我看到的主要问题是我必须编辑app.yaml文件中的变量,以便它们适合环境(例如,我env_variables用来存储 mysql 凭据......)。

我在文档中找不到任何指向正确管理方法的内容,有什么想法吗?

另外...当从 GIT 存储库部署时,似乎app.yaml需要在存储库中,这是正确的吗?对我来说似乎不对……一定有更好的方法!

E. *_*son 6

您可以使用配置文件或数据存储设置来跟踪此环境信息。在本次演讲的第 26 分钟,我给出了一些示例,说明如何在不需要不同app.yaml文件的情况下自定义环境。

gcloud app deploy还接受命令行上的 yaml 文件列表,默认值为app.yaml.


Dan*_*scu 2

注意:假设您使用不同的应用程序来实现每个环境,而不是同一应用程序的不同服务/模块,恕我直言,这将是不必要的复杂化。请参阅如何将一个 App Engine 应用部署到多个项目

就我个人而言,我为每个环境使用不同的 git 分支。

当然,我只有 2 个环境:开发/暂存环境和生产环境,但同样的原则适用:

分支结构反映了环境中的流程:

  • master分支用于dev环境
  • 树枝staging被从master树枝上拉下来
  • 树枝production被从staging树枝上拉下来

要将代码更改从一个环境传播到另一个环境,您需要将相应的子分支合并到较新的父分支版本(其中包含您要选取的更改),并将合并的子分支代码部署到相应的环境。

每个分支都有自己的文件版本app.yaml。您必须密切注意此文件中的冲突,只要对它的更改从一个分支传播到另一个分支,这些冲突就可能会弹出。

另请参阅Google App Engine Java 中的环境特定变量(可能还有其链接/相关帖子)。