云功能+云构建:如何在构建时添加文件以运行

时间:2019-06-07 06:28:21

标签: google-cloud-platform google-cloud-functions google-cloud-build

我有一个场景,我在存储桶中有一个秘密json文件,我想在Cloud Build的构建时cp进入云函数的目录。

cp命令有效,但是该文件既不在部署的zip中也不在运行时的代码中,因为缺少配置值时调用该函数会出错。

这里是cloudbuild.yaml

steps:
  - name: "gcr.io/cloud-builders/gsutil"
    args: ["cp", "gs://GCP-PROJECT/production.json", "./config/production.json"]
  - name: "gcr.io/cloud-builders/gsutil"
    args: ["cp", "gs://GCP-PROJECT/default.json", "./config/default.json"]
  - name: gcr.io/cloud-builders/gcloud
    args:
      - beta
      - functions
      - deploy
      - --region=europe-west1
      - --memory=128
      - --runtime=nodejs8
      - --trigger-topic=mailsend-sg
      - --stage-bucket=gen-function1-stage
      - --timeout=20s
      - --source=.
      - --entry-point=sendMail
      - send-sendgrid
  - name: gcr.io/cloud-builders/gcloud
    args:
      - beta
      - functions
      - deploy
      - --region=europe-west1
      - --memory=128
      - --runtime=nodejs8
      - --trigger-http
      - --stage-bucket=gen-function2-stage
      - --timeout=20s
      - --source=.
      - --entry-point=makeMail
      - make-fs-mail
timeout: "1600s"

我在localfile路径上做错了吗?

感谢stackoverflow:)

1 个答案:

答案 0 :(得分:1)

在构建步骤“ args”中,将production.json和default.json放在/ config文件夹中。

因此,您需要在构建步骤中指定- --source=./config,而不要像这样- --source=.

steps:
  - name: "gcr.io/cloud-builders/gsutil"
    args: ["cp", "gs://GCP-PROJECT/production.json", "./config/production.json"]
  - name: "gcr.io/cloud-builders/gsutil"
    args: ["cp", "gs://GCP-PROJECT/default.json", "./config/default.json"]
  - name: gcr.io/cloud-builders/gcloud
    args:
      - beta
      - functions
      - deploy
      - --region=europe-west1
      - --memory=128
      - --runtime=nodejs8
      - --trigger-topic=mailsend-sg
      - --stage-bucket=gen-function1-stage
      - --timeout=20s
      - --source=./config
      - --entry-point=sendMail
      - send-sendgrid
  - name: gcr.io/cloud-builders/gcloud
    args:
      - beta
      - functions
      - deploy
      - --region=europe-west1
      - --memory=128
      - --runtime=nodejs8
      - --trigger-http
      - --stage-bucket=gen-function2-stage
      - --timeout=20s
      - --source=./config
      - --entry-point=makeMail
      - make-fs-mail
timeout: "1600s"

那应该可以解决Cloud Functions部署问题。如果仍然遇到错误,请在此处发布错误/调试日志