【问题标题】:Add environment variable in app.yaml file during Google Build在 Google Build 期间在 app.yaml 文件中添加环境变量
【发布时间】:2019-12-18 16:11:55
【问题描述】:

我正在使用带有 cloudbuild.yaml 的 Google Cloud Build 下载一个 app.yaml 文件,其中包含我基于 Python 的应用程序的环境变量。用于初始部署的app.yaml 版本不包含用于安全保护的环境变量。

但是,这似乎不起作用,并且没有检测到环境变量 - 因为 app.yaml 似乎没有被覆盖。

以下是我的cloudbuild.yaml配置:

steps:
 - name: gcr.io/cloud-builders/gsutil
args:
  [
    "cp",
    "gs://<path to bucket>/app.yaml",
    "app.yaml",
  ]

我知道App Engine 上的应用程序的入口点是通过app.yaml,但我认为如果包含cloudBuild.yaml,则会先调用它,然后再调用app.yaml

如果这不正确,我还能如何将环境变量附加到我的 app.yaml 文件中?

谢谢!

【问题讨论】:

  • 你能给我一些精确的信息吗?当你使用cloud build部署appengine时,第一步是下载一个依赖环境的app.yaml文件,因为它包含秘密并且你不能提交它们?而且即使下载成功,也不会覆盖你现有的 app.yaml?

标签: python google-app-engine yaml google-cloud-build


【解决方案1】:

当您运行 gcloud app deploy 时,部署过程不会考虑 cloudbuild.yaml 文件,而是将您的应用与 unpopulated app.yaml 文件一起部署。

要运行自定义构建步骤,您需要像之前一样创建一个 cloudbuild.yaml 文件,定义您的自定义构建步骤,然后添加一个构建步骤来运行部署命令。应该是这样的:

steps:
 - name: gcr.io/cloud-builders/gsutil
   args:
   [
    "cp",
    "gs://<path to bucket>/app.yaml",
    "app.yaml",
   ]
 - name: 'gcr.io/cloud-builders/gcloud'
   args: ['app', 'deploy']

然后,您将通过发出以下命令来运行构建(在您运行 gcloud app deploy 的同一目录中):

gcloud builds submit --config cloudbuild.yaml .

这将:

  • 将当前目录上传到 Cloud Build 实例
  • 从 CB 实例的该目录中运行 gsutil 命令以检索填充了您的环境变量的 app.yaml 文件
  • 将您的代码从 Cloud Build 实例部署到 App Engine

【讨论】:

  • 顺便提一下,当我尝试使用非自定义运行时时,您不能将 app.yaml 和 cloudbuild.yaml 放在同一个目录中,因此如果您使用的是非自定义运行时,则需要将 app.yaml 和其他 python 文件移动到子目录并使用 args: ["app", "deploy", "subdir/app.yaml"] 之类的内容进行部署
猜你喜欢
  • 2019-01-05
  • 1970-01-01
  • 2021-08-25
  • 1970-01-01
  • 2021-02-13
  • 2021-04-14
  • 1970-01-01
  • 2019-06-29
  • 2021-05-19
相关资源
最近更新 更多