如何将一个应用引擎应用部署到多个项目

时间:2016-09-08 15:46:27

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

我的问题是我想通过使用不同的GCP项目来创建devstageprod环境。

基本上他们运行相同的代码,只是在不同的隔离环境中运行它们。

我现在在命令行中使用gcloud app deploy来部署应用程序。

如何有效地将应用部署到不同的项目? 我是否每次都必须gcloud init更改默认项目的配置? 必须有一些更好的做法。

或者,我是否有更好的方法在app引擎的上下文中设置dev ...环境?

感谢。

4 个答案:

答案 0 :(得分:2)

"标准"方法是使用版本,例如

qa.myApp.appspot.com

一旦版本准备好进行下一步,您就可以使用不同的版本ID进行部署。

使用多个项目的一个问题是您必须为每个项目维护不同的数据集。

答案 1 :(得分:1)

对于Python应用程序,您可以在app.yaml文件中设置应用程序。这允许您为每个项目使用不同的数据。这是在使用appcfg.py命令进行部署时。

application: myproject
version: alpha-001
runtime: python27
api_version: 1
threadsafe: true

handlers:
- url: /
  script: home.app

如果您不想为每个项目更改此文件中的应用程序值,可以运行以下命令:

appcfg.py -A <YOUR_PROJECT_ID> -V v1 update myapp/

https://cloud.google.com/appengine/docs/python/config/appref

  

如果未在文件中指定应用程序,请在部署时使用appcfg命令中的--application选项。使用gcloud app deploy命令进行部署时,将忽略此元素。

答案 2 :(得分:1)

我的偏好是通过与代码相同的版本控制来管理不同的环境 - 每个环境一个分支,使部署与代码更改的自然流完全一致,通过分支合并提升:dev - &GT; stage - &gt; production

为了最大限度地降低人为错误的风险,我尽可能地将代码配置保留在代码本身中(即 - 从.yaml文件中获取应用程序ID,版本等,而不是通过将cmd部署为args)。部署cmds本身保存在一个备忘单文件中(此时太简单,无法保证完整的脚本),也是git-controlled。在这个答案中说明:https://stackoverflow.com/a/34111170/4495081

部署是从单独的专用工作区完成的 - 每个环境一个,基于相应的git分支(我从不切换这些工作区中的分支)。我只是将对应于所需环境的工作空间更新为所需的版本,并从工作空间的备忘单中复制粘贴部署cmd。

这个模型是IMHO CI / CD-ready,可以很容易地完全自动化。

答案 3 :(得分:1)

不是每次都使用gcloud init更改配置,而是使用此代码更快地部署到多个项目:

gcloud app deploy -q --project [YOUR_PROJECT_ID]

如果您的项目具有相似的ID,请说:test1test2test3test4,您可以使用一个命令部署到这四个项目。使用此代码:

for i in {1..4}; do gcloud app deploy -q --project test${i}; done