热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

错误:获取存储源时出错:generic::unknown…当通过GitHubActions部署GCPCloudFunction时

我正在通过此GitHubAction部署FirebaseCloudFunction。当我使用服务帐户从我自己的机器部署时,它工作正常。使用相同的服务帐户运行操作时,我遇到了以下

我正在通过此 GitHub Action部署 Firebase Cloud Function 。当我使用服务帐户从我自己的机器部署时,它工作正常。使用相同的服务帐户运行操作时,我遇到了以下错误。

最终错误:

错误:错误获取存储源:通用::未知:重试预算用尽(3次尝试):获取gcs源:从gcs解包源:源提取容器以非零状态退出:9

之前的日志:

未找到中央目录结尾签名。该文件不是一个 zipfile,或者它构成了一个多部分存档的磁盘。在后一种情况下,将在此存档的最后一个磁盘上找到中央目录和 zipfile 注释。解压缩:在 /tmp/source-archive.zip 或 /tmp/source-archive.zip.zip 之一中找不到 zipfile 目录,并且找不到 /tmp/source-archive.zip.ZIP,句号。

这是我的操作 yml:

name: Deploy
on:
pull_request:
branches:
- master
jobs:
integration-test:
name: Run tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: checkout repo and set up Node.js v12.x
uses: actions/setup-node@v1
with:
node-version: 12.x
- name: Install dependencies
run: cd ./functions/ && npm install
- id: deploy
name: Deploy my_function to Cloud Functions
uses: google-github-actions/deploy-cloud-functions@v0.1.2
with:
name: my_function
runtime: nodejs12
credentials: ${{ secrets.GCP_ACCOUNT_JSON }}
source_dir: ./functions/
- id: echo_url
name: Echo deployed Cloud Function URL
run: echo ${{ steps.deploy.outputs.url }}

该函数本身不需要 GCS 访问权限,但服务帐户是一个编辑器,因此无论如何它都有。我想这个问题更多地与将 GitHub 源代码上传到 GCS 然后从那里获取以进行部署的方式有关?任何提示?

回答


如果有人使用 Cloud Build 进行部署并遇到此问题,这里有一个潜在的原因和解决方案。

原因

我正在按照Firebase的官方 Cloud Build 文档中的步骤操作,但一直收到此错误。对于说使用 Node 12 的类似问题,有多个答案,但这实际上并没有帮助,因为我使用的是提供的图像。

我终于想到,实际上是谷歌提供的构建步骤图像具有不兼容的Node版本。我查看了用于构建映像的 Docker 文件,它没有指定 Node.js 的哪个版本。当我在 Cloud Build 上检查图像中使用的 Node 版本时,它是 Node 15。我怀疑这就是导致问题的原因。

解决方案

为了创建一个可以在 Cloud Build 上使用 Node 12 部署 Firebase 函数的镜像,我按照文档中的步骤克隆了社区构建器镜像:

git clone https://github.com/GoogleCloudPlatform/cloud-builders-community.git

cd cloud-builders-community/firebase

但是在我将构建提交到我的项目之前,我Dockerfile在 repo 中进行了更改以专门使用 Node 12:

FROM node:12

FROM node:12

按照其余步骤提交图像。一旦我这样做了,我就能够在 Cloud Build 上部署 Firebase 函数!

作为参考,这就是我的cloudbuild.yaml样子:






推荐阅读
  • Lua基本语法lua与C#的交互(相当简单详细的例子)
    lua脚本与C#的交互本文提供全流程,中文翻译。Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验——高分辨率用户请根据需求调整网页缩放比例)1LuaAndC#——L ... [详细]
  • 本文提供了详细的指导,帮助开发者了解如何使用PHP插件进行网站内容的翻译,特别是针对WordPress插件和主题的汉化及多语言支持。 ... [详细]
  • Nibblestutotials.net教程 – Blend  Silverlight1系列之Button Basic
    Basic:createonebutton文中三部分所用资源及代码下载:part1,part2,part3Buttonsbasicpart1:drawingNibbl ... [详细]
  • 本文将指导你如何通过自定义配置,使 Windows Terminal 中的 PowerShell 7 更加高效且美观。我们将移除默认的广告和提示符,设置快捷键,并添加实用的别名和功能。 ... [详细]
  • KNN算法在海伦约会预测中的应用
    本文介绍如何使用KNN算法进行海伦约会的预测。我们将从数据导入、数据预处理、数据可视化到最终的模型训练和测试进行全面解析。 ... [详细]
  • 获取年月日,之前的日期不能选择日历cCalendar.getInstance();获取系统的工具类【可以获取时间】DatePickerDialogdate ... [详细]
  • 14款免费网站访客行为分析工具推荐
    探索14款免费的网站访客行为分析工具,帮助你深入了解访客为何离开你的网站,并提供策略以提高用户留存率和转化率。 ... [详细]
  • 本文探讨了在JavaScript中如何有效地从服务器控件DropDownList中获取绑定的ID值,而非仅仅是显示的文本值。这对于需要根据用户选择动态处理数据的应用场景非常有用。 ... [详细]
  • 2023年PHP处理请求超时的全面指南
    本文详细介绍了在PHP中处理请求超时的各种方法,包括设置脚本执行时间、处理file_get_contents函数超时以及优化AJAX请求等,适合开发者参考学习。 ... [详细]
  • ANSI最全介绍linux终端字体改变颜色等ANSI转义序列维基百科,自由的百科全书由于国内不能访问wiki而且国内关于ANSI的介绍都是简短的不能达到,不够完整所以转wiki到此 ... [详细]
  • django项目中使用手机号登录
    本文使用聚合数据的短信接口,需要先获取到申请接口的appkey和模板id项目目录下创建ubtils文件夹,定义返回随机验证码和调取短信接口的函数function.py文件se ... [详细]
  • 介绍了一款轻量级的移动端弹窗组件,支持Toast、Alert和Confirm三种弹窗样式,完全采用原生JavaScript编写,无需依赖外部库或CSS文件。 ... [详细]
  • 本文详细介绍了MySQL表分区的概念、类型及其在实际应用中的实施方法,特别是针对Zabbix数据库的优化策略。 ... [详细]
  • 图神经网络模型综述
    本文综述了图神经网络(Graph Neural Networks, GNN)的发展,从传统的数据存储模型转向图和动态模型,探讨了模型中的显性和隐性结构,并详细介绍了GNN的关键组件及其应用。 ... [详细]
  • 本文初步探讨了PHP中基于JWT(JSON Web Token)的身份验证机制。具体流程包括:1. 客户端通过用户名和密码发起登录请求;2. 服务器接收并验证用户凭证的合法性,若验证通过,则生成并返回一个JWT令牌;3. 客户端接收该令牌,并在后续请求中携带此令牌以完成身份验证。这一机制不仅提高了安全性,还简化了会话管理。 ... [详细]
author-avatar
itbases
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有