Google Cloud Build 中使用 Sharp 库的 Firebase 部署函数失败
Firebase deploy functions with Sharp library fails in Google Cloud Build
从 Bitbucket Pipelines 迁移到 Google Cloud Build 后,Firebase 部署失败。该设置已在 Bitbucket Pipelines 和本地成功部署。
除了下面的错误之外,没有给出进一步的解释。我对部分代码进行了注释,以了解 "const sharp = require('sharp')" 是导致构建失败的一个命令。
但是 "firebase deploy" 没有明显的原因导致 "require('sharp')" 失败,我必须想办法解决这个问题。
Google Cloud Build
中的 Firebase 部署输出
Step #5: === Deploying to 'werkout-staging-b1483'...
Step #5:
Step #5: i deploying functions
Step #5: ✔ functions: Finished running predeploy script.
Step #5: i functions: ensuring necessary APIs are enabled...
Step #5: ✔ functions: all necessary APIs are enabled
Step #5: i functions: preparing functions/cloud_functions directory for uploading...
Step #5:
Step #5: Error: There was an unknown problem while trying to parse function triggers. Please ensure you are using Node.js v6 or greater.
Finished Step #5
ERROR
ERROR: build step 5 "gcr.io/werkout-staging-b1483/firebase" failed: exit status 2
Docker 文件
FROM cypress/base:10.15.3
#CMD ["node"]
RUN npm install -g firebase-tools@^7.0.0
ENTRYPOINT ["/usr/local/bin/firebase"]
有什么想法吗?
这次我想通了。
I 运行 npm ci 构建云函数,然后使用 firebase deploy 将它们部署到云中。问题是,正如您在上面的 docker 文件中看到的那样,gcr.io/$PROJECT_ID/firebase 图像是使用节点 10.15.3 构建的,而 gcr.io/cloud-builders/npm 使用的是节点 8。唯一足够挑剔的 npm 包是 Sharp,因此它无法构建。
最糟糕的是,firebase 对此非常保密,除了纯粹的猜测,我没有任何线索可以解决。
- name: 'gcr.io/cloud-builders/npm'
args: [ 'run', 'build' ]
- name: 'gcr.io/$PROJECT_ID/firebase'
args: [ 'firebase', 'deploy' ]
解决方法:
- name: 'gcr.io/cloud-builders/npm:node-10.10.0'
args: [ 'run', 'build' ]
- name: 'gcr.io/$PROJECT_ID/firebase'
args: [ 'firebase', 'deploy' ]
这应该与云函数中指定的节点引擎版本ci相匹配package.json。
从 Bitbucket Pipelines 迁移到 Google Cloud Build 后,Firebase 部署失败。该设置已在 Bitbucket Pipelines 和本地成功部署。
除了下面的错误之外,没有给出进一步的解释。我对部分代码进行了注释,以了解 "const sharp = require('sharp')" 是导致构建失败的一个命令。
但是 "firebase deploy" 没有明显的原因导致 "require('sharp')" 失败,我必须想办法解决这个问题。
Google Cloud Build
中的 Firebase 部署输出Step #5: === Deploying to 'werkout-staging-b1483'...
Step #5:
Step #5: i deploying functions
Step #5: ✔ functions: Finished running predeploy script.
Step #5: i functions: ensuring necessary APIs are enabled...
Step #5: ✔ functions: all necessary APIs are enabled
Step #5: i functions: preparing functions/cloud_functions directory for uploading...
Step #5:
Step #5: Error: There was an unknown problem while trying to parse function triggers. Please ensure you are using Node.js v6 or greater.
Finished Step #5
ERROR
ERROR: build step 5 "gcr.io/werkout-staging-b1483/firebase" failed: exit status 2
Docker 文件
FROM cypress/base:10.15.3
#CMD ["node"]
RUN npm install -g firebase-tools@^7.0.0
ENTRYPOINT ["/usr/local/bin/firebase"]
有什么想法吗?
这次我想通了。
I 运行 npm ci 构建云函数,然后使用 firebase deploy 将它们部署到云中。问题是,正如您在上面的 docker 文件中看到的那样,gcr.io/$PROJECT_ID/firebase 图像是使用节点 10.15.3 构建的,而 gcr.io/cloud-builders/npm 使用的是节点 8。唯一足够挑剔的 npm 包是 Sharp,因此它无法构建。
最糟糕的是,firebase 对此非常保密,除了纯粹的猜测,我没有任何线索可以解决。
- name: 'gcr.io/cloud-builders/npm'
args: [ 'run', 'build' ]
- name: 'gcr.io/$PROJECT_ID/firebase'
args: [ 'firebase', 'deploy' ]
解决方法:
- name: 'gcr.io/cloud-builders/npm:node-10.10.0'
args: [ 'run', 'build' ]
- name: 'gcr.io/$PROJECT_ID/firebase'
args: [ 'firebase', 'deploy' ]
这应该与云函数中指定的节点引擎版本ci相匹配package.json。