如何使用云构建将环境变量传递给 app.yaml
How to pass environment variables to the app.yaml using cloud build
我的 CI/CD 的最后一步是使用 gcloud app deploy 进行部署,但是我无法使用我的环境变量提交 app.yaml,那么如何使用传递 env 的云构建进行部署变量做 app.yaml?
这是我的cloudbuild.yaml
steps:
- name: "gcr.io/cloud-builders/gcloud"
args: ["app", "deploy"]
timeout: "1800s"
一个简单的选择是将您的环境变量列在 Cloud Storage 的文件中(甚至 app.yaml 文件本身)。然后,您可以使用 cloud-builders/gsutil 在构建步骤中检索此文件,如下所示:
steps:
- name: gcr.io/cloud-builders/gsutil
args: ['cp', 'gs://mybucket/env_vars.txt', 'env_vars.txt']
这会将文件复制到 /workspace 目录。然后,下一个构建步骤可以使用环境变量填充 app.yaml 文件(或者甚至只是将检索到的 app.yaml 文件复制到正确的路径)。下一步也是最后一步就是您提到的部署应用程序的步骤。
请注意,在 Cloud Build 环境中执行时,将使用项目 builder service account 的凭据执行命令。您需要向该服务帐户授予对云存储上文件的访问权限。
我的 CI/CD 的最后一步是使用 gcloud app deploy 进行部署,但是我无法使用我的环境变量提交 app.yaml,那么如何使用传递 env 的云构建进行部署变量做 app.yaml?
这是我的cloudbuild.yaml
steps:
- name: "gcr.io/cloud-builders/gcloud"
args: ["app", "deploy"]
timeout: "1800s"
一个简单的选择是将您的环境变量列在 Cloud Storage 的文件中(甚至 app.yaml 文件本身)。然后,您可以使用 cloud-builders/gsutil 在构建步骤中检索此文件,如下所示:
steps:
- name: gcr.io/cloud-builders/gsutil
args: ['cp', 'gs://mybucket/env_vars.txt', 'env_vars.txt']
这会将文件复制到 /workspace 目录。然后,下一个构建步骤可以使用环境变量填充 app.yaml 文件(或者甚至只是将检索到的 app.yaml 文件复制到正确的路径)。下一步也是最后一步就是您提到的部署应用程序的步骤。
请注意,在 Cloud Build 环境中执行时,将使用项目 builder service account 的凭据执行命令。您需要向该服务帐户授予对云存储上文件的访问权限。