【问题标题】:Google Cloud Function doesn't update on change when using Deployment Manager使用 Deployment Manager 时,Google Cloud Function 不会更新更改
【发布时间】:2021-04-16 20:38:51
【问题描述】:

在使用 Deployment Manager 和 Cloud Function 时,似乎在对函数进行代码更改时,Deployment Manager 似乎没有检测和更新该函数。

复制:

  1. 创建 helloworld 函数。
  2. 使用部署管理器部署功能。
  3. 更改代码。
  4. 再次部署。
  5. 通过访问控制台并检查源代码,观察部署的功能尚未更新。

如何使函数失效以使其正确部署?

【问题讨论】:

标签: google-cloud-platform google-cloud-functions google-deployment-manager


【解决方案1】:

这与提供的链接 github.com/hashicorp/terraform-provider-google/issues/1938 有关。

似乎没有执行 zip 的哈希,因此需要对部署名称或其他属性进行某种更改。

我的解决方案是获取当前部署版本,并将其递增并将其作为属性传递给函数。

increment_function_version() {
  FUN=$1
  [[ -z "$FUN" ]] && echo "error: require function name" && exit 1

  if ! gcloud functions describe $FUN --region=europe-west2 2> /dev/null; then
    NEW_VERSION=1
  else
    VERSION=$(gcloud functions describe $FUN --region=europe-west2 | grep versionId | awk '{ print $2 }' | sed "s|\'||g")
    NEW_VERSION=$(expr $(($VERSION + 1)))
  fi
}

为了使用部署管理器执行此操作,我必须从 YAML 转换为完整的 python 模式(或 Jinja),因为无法使用 --config 标志传递属性。

gcloud deployment-manager --project $PROJECT_ID deployments update $NAME $TEMPLATE_FLAG --template mytemplate.py --properties version:$NEW_VERSION

为导入提供带有 python 模板的架构很重要,否则部署失败。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-01
    • 1970-01-01
    • 2021-10-03
    • 2018-09-07
    • 2017-02-02
    • 2021-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多