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

时间:2017-03-30 13:09:50

标签: google-app-engine google-cloud-platform

我目前已启动并运行我的应用,app.yamldispatch.yaml位于应用程序的根目录中,我通过Google Cloud CLI进行部署。

目前这种情况很有效,但当我转向devstagingprod环境时,我可以看到它不再可行。

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

我无法在文档中找到任何指向正确管理方式的内容,任何想法?

另外......当从GIT仓库部署时,似乎app.yaml需要在回购中,这是正确的吗?它对我来说似乎不对......必须有一个更好的方法!

2 个答案:

答案 0 :(得分:3)

您可以使用配置文件或数据存储设置来跟踪此环境信息。 At minute 26 in this talk我举例说明如何自定义您的环境,而不需要不同的app.yaml文件。

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

答案 1 :(得分:1)

注意:假设您使用不同的应用程序来实现每个环境,而不是同一应用程序的不同服务/模块,这将是一个不必要的复杂功能。见How to deploy one app engine app to multiple projects

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

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

分支结构反映了流经环境:

  • master分支用于dev环境
  • staging分支已从master分支
  • 中删除
  • production分支已从staging分支
  • 中删除

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

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

另见Environment Specific Variables In Google App Engine Java(也许还有其链接/相关帖子)。