我目前已启动并运行我的应用,app.yaml
和dispatch.yaml
位于应用程序的根目录中,我通过Google Cloud CLI进行部署。
目前这种情况很有效,但当我转向dev
,staging
和prod
环境时,我可以看到它不再可行。
我看到的主要问题是我必须编辑app.yaml
文件中的变量,以便它们适合环境(例如我使用env_variables
存储mysql凭据...)。< / p>
我无法在文档中找到任何指向正确管理方式的内容,任何想法?
另外......当从GIT仓库部署时,似乎app.yaml
需要在回购中,这是正确的吗?它对我来说似乎不对......必须有一个更好的方法!
答案 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(也许还有其链接/相关帖子)。