Firebase CLI v11.2.0清理构建镜像报错 无法部署Cloud Functions
问题根因
Firebase CLI 11.2.0 版本默认将Cloud Functions构建镜像的存储介质从Container Registry切换到Artifact Registry,但首次部署时不会自动为目标项目初始化对应区域的gcf-artifacts仓库,也没有给部署链路使用的服务账号预配置Artifact Registry的对应操作权限,走到构建后镜像清理环节时就会触发资源不存在/权限不足的未处理错误,直接中断部署流程。
解决步骤
- 手动创建对应区域的Artifact Registry仓库
进入Google Cloud控制台的Artifact Registry页面,选择和函数部署一致的区域(和报错提示里标注的区域完全匹配,比如示例中的us-central1),新建Docker格式仓库:- 仓库名称固定填
gcf-artifacts - 位置类型选择对应单区域,和函数部署区域保持一致
- 其余配置保持默认即可
- 仓库名称固定填
- 给核心服务账号绑定操作权限
进入IAM权限管理页面,找到两个核心服务账号:项目默认App Engine服务账号(格式为<你的项目ID>@appspot.gserviceaccount.com)、Cloud Functions默认运行服务账号,给两个账号绑定以下角色:- Artifact Registry 管理员
- Artifact Registry 仓库写入者
- 旧版存储桶读取者(兼容历史镜像迁移场景)
- 确认必要API全部启用
进入云控制台API库页面,检查三个API是否为启用状态:Artifact Registry API、Cloud Build API、Cloud Functions API,未启用的手动开启即可。 - 清理残留资源后重新部署
先确认没有正在运行的Cloud Build任务,删除首次部署失败残留的临时镜像,回到本地项目根目录重新执行部署命令firebase deploy --only functions:func1即可正常完成更新。
临时回退方案
如果上述操作后仍存在部署异常,可以临时切回旧版Container Registry存储逻辑,部署前在项目根目录执行命令:firebase functions:config:set functions.docker_registry=container_registry
执行完成后再运行部署命令就会走历史部署流程,不会触发该镜像清理报错。
内容的提问来源于stack exchange,提问作者nickh
相关产品推荐
相关产品推荐

