如何使用 Cloud Build 在 GCP 上部署函数?

问题描述

我创建了一个名为 pupetter-e2e 的 Cloud Functions 函数,该函数触发了对称为 homepage 的存储桶存储的更改。我想使用以下 cloudbuild.yaml 部署函数更新:

steps:
- name: 'gcr.io/cloud-builders/gcloud'
  args:
  - functions
  - deploy
  - pupetter-e2e
  - --source=.
  - --trigger-bucket homepage

(触发描述:https://cloud.google.com/functions/docs/deploying/filesystem

或者:

steps:
- name: 'gcr.io/cloud-builders/gcloud'
  args:
  - functions
  - deploy
  - pupetter-e2e
  - --source=.
  - --trigger-resource hjemmeside  
  - --trigger-event google.storage.object.finalize

(如 https://cloud.google.com/functions/docs/calling/storage 所述) 可悲的是,我明白了

错误:(gcloud.functions.deploy) 无法识别的参数:--trigger-bucket hjemmeside(您的意思是“--trigger-bucket”吗?)或 --trigger-resource hjemmeside(你的意思是 --trigger-resource?)

我曾尝试使用 --trigger-bucket,但无法使其正常工作。有人可以帮助我纠正我的 cloudbuild.yaml 中的错误吗?

解决方法

您有 2 个解决方案来解决这个问题(甚至更多,但 2 个已经很好了)。首先,args 列表中不接受 Space,因此:

  • 用等号替换空格。
steps:
- name: 'gcr.io/cloud-builders/gcloud'
  args:
  - functions
  - deploy
  - pupetter-e2e
  - --source=.
  - --trigger-bucket=homepage
  • 将参数值放入新的 ARGS 值(新行)
steps:
- name: 'gcr.io/cloud-builders/gcloud'
  args:
  - functions
  - deploy
  - pupetter-e2e
  - --source=.
  - --trigger-bucket 
  - homepage

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...