Google Cloud Function 在使用 Deployment Manager 时不会根据更改进行更新
Google Cloud Function doesn't update on change when using Deployment Manager
使用 Deployment Manager 和 Cloud Function 时,当对函数进行代码更改时,Deployment Manager 似乎没有检测和更新函数。
重现:
- 创建 helloworld 函数。
- 使用部署管理器部署函数。
- 更改代码。
- 再次部署。
- 通过访问控制台并检查源代码,发现已部署的函数尚未更新。
如何使函数失效以使其正确部署?
这与提供的link、github.com/hashicorp/terraform-provider-google/issues/1938.
有关
似乎未执行 zip 哈希,因此需要对部署名称或其他属性进行某种更改。
我的解决方案是获取当前部署版本,递增它并将其作为 属性 传递给函数。
increment_function_version() {
FUN=
[[ -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 }' | 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 模板的架构很重要,否则部署会失败。
使用 Deployment Manager 和 Cloud Function 时,当对函数进行代码更改时,Deployment Manager 似乎没有检测和更新函数。
重现:
- 创建 helloworld 函数。
- 使用部署管理器部署函数。
- 更改代码。
- 再次部署。
- 通过访问控制台并检查源代码,发现已部署的函数尚未更新。
如何使函数失效以使其正确部署?
这与提供的link、github.com/hashicorp/terraform-provider-google/issues/1938.
有关似乎未执行 zip 哈希,因此需要对部署名称或其他属性进行某种更改。
我的解决方案是获取当前部署版本,递增它并将其作为 属性 传递给函数。
increment_function_version() {
FUN=
[[ -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 }' | 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 模板的架构很重要,否则部署会失败。