首页 > 解决方案 > Cloud Build 部署后 Firebase Cloud 功能停止工作

问题描述

我正在使用 Cloud Build 部署我的 firebase 项目(托管和云功能),该项目由提交到 github 存储库中的分支触发。部署成功且站点正常运行,但部署后云功能未运行。它们甚至不会在日志中显示为被调用,因此没有错误。

我从 UI 中单击一个按钮,该按钮调用云功能,它将一些数据保存到实时数据库中。调用函数的代码在 try catch 中运行,catch 代码运行。云函数的日志什么也没有显示——该函数甚至没有运行。然后,当我从笔记本电脑而不是通过云构建在本地部署项目时,单击按钮时云功能运行并将数据保存到数据库中,并且日志表明该功能已被调用。从前端触发事件时,不会调用任何云函数,但是,当我从 Cloud Build 部署时

只有当项目由 Cloud Build 部署时,函数在调用时才不会运行。我想知道这是否可能是权限问题?

前端代码:

 const createTeam = (payload) => {
  return async (dispatch, getState, getFirebase) => {
    debugger;
    const createTeam = getFirebase().functions().httpsCallable("createTeam");
    console.log("create team===>", createTeam);
    try {
      console.log("about to run");
      await createTeam(payload);
      dispatch(
        sendNotification({
          severity: "success",
          message: "Team Created",
          isOpen: true,
        })
      );
    } catch (e) {
      dispatch(
        sendNotification({
          severity: "error",
          message: "An error occurred and team was not created.",
          isOpen: true,
        })
      );
    }
  };
};

构建文件:

steps:
  - name: "gcr.io/cloud-builders/npm"
    dir: "functions"
    args: ["install"]
  # Install
  - name: "gcr.io/cloud-builders/npm"
    args: ["install"]
  # Build
  - name: "gcr.io/cloud-builders/npm"
    args: ["run", "build"]
  # Deploy
  - name: "gcr.io/$PROJECT_ID/firebase"
    args: ["deploy", "--project=$PROJECT_ID"]

从部署日志:

    Hosting URL: xxxx
Project Console: xxxx
✔  Deploy complete!

✔  hosting[agile-boost]: release complete
i  hosting[agile-boost]: releasing new version...
✔  hosting[agile-boost]: version finalized
i  hosting[agile-boost]: finalizing version...
✔  functions[launchAssessments(us-central1)]: Successful update operation. 
✔  functions[createTeam(us-central1)]: Successful update operation. 
✔  functions[sendParticipantEmailWhenAssessmentOpens(us-central1)]: Successful update operation. 
✔  functions[completeAssessments(us-central1)]: Successful update operation. 
✔  functions[refreshMetricCategoryAvg(us-central1)]: Successful update operation. 
✔  functions[saveParticipantAnswer(us-central1)]: Successful update operation. 
✔  functions[updateParticipant(us-central1)]: Successful update operation. 
✔  functions[closeAssessmentsWhenTeamIsDeleted(us-central1)]: Successful update operation. 
✔  functions[getParticipantsData(us-central1)]: Successful update operation. 
✔  functions[createAccount(us-central1)]: Successful update operation. 
✔  functions[addParticipantToAssessment(us-central1)]: Successful update operation. 
✔  functions[createAssessment(us-central1)]: Successful update operation. 
✔  functions[reviseAssessmentMetrics(us-central1)]: Successful update operation. 
✔  functions[refreshMetricQuestionAvg(us-central1)]: Successful update operation. 
✔  functions[updateParticipantWhenTeamParticipantUpdates(us-central1)]: Successful update operation. 
✔  functions[refreshMetricTagAvg(us-central1)]: Successful update operation. 
✔  functions[updateMetricsWhenParticipantStatusChanges(us-central1)]: Successful update operation. 
✔  functions[addNewTeamParticipantToActiveAssessments(us-central1)]: Successful update operation. 
✔  functions[getSurveyData(us-central1)]: Successful update operation. 
i  functions: scheduler job firebase-schedule-completeAssessments-us-central1 is up to date, no changes required
i  functions: scheduler job firebase-schedule-launchAssessments-us-central1 is up to date, no changes required
✔  pubsub: required API pubsub.googleapis.com is enabled
✔  scheduler: required API cloudscheduler.googleapis.com is enabled
i  pubsub: ensuring required API pubsub.googleapis.com is enabled...
i  scheduler: ensuring required API cloudscheduler.googleapis.com is enabled...
i  functions: updating Node.js 10 function completeAssessments(us-central1)...
i  functions: updating Node.js 10 function launchAssessments(us-central1)...
i  functions: updating Node.js 10 function getParticipantData(us-central1)...
i  functions: updating Node.js 10 function getParticipantsData(us-central1)...
i  functions: updating Node.js 10 function closeAssessmentsWhenTeamIsDeleted(us-central1)...
i  functions: updating Node.js 10 function updateParticipantWhenTeamParticipantUpdates(us-central1)...
i  functions: updating Node.js 10 function updateMetricsWhenParticipantStatusChanges(us-central1)...
i  functions: updating Node.js 10 function sendParticipantEmailWhenAssessmentOpens(us-central1)...
i  functions: updating Node.js 10 function addNewTeamParticipantToActiveAssessments(us-central1)...
i  functions: updating Node.js 10 function saveParticipantAnswer(us-central1)...
i  functions: updating Node.js 10 function getSurveyData(us-central1)...
i  functions: updating Node.js 10 function updateParticipant(us-central1)...
i  functions: updating Node.js 10 function addParticipantToAssessment(us-central1)...
i  functions: updating Node.js 10 function createAssessment(us-central1)...
i  functions: updating Node.js 10 function createTeam(us-central1)...
i  functions: updating Node.js 10 function createAccount(us-central1)...
i  functions: updating Node.js 10 function reviseAssessmentMetrics(us-central1)...
i  functions: updating Node.js 10 function refreshMetricQuestionAvg(us-central1)...
i  functions: updating Node.js 10 function refreshMetricTagAvg(us-central1)...
i  functions: updating Node.js 10 function refreshMetricCategoryAvg(us-central1)...
✔  database: rules for database xxxx released successfully
i  database: releasing rules...
✔  hosting[agile-boost]: file upload complete
i  hosting: uploading new files [4/6] (66%)
i  hosting: hashing files [34/35] (97%)
i  hosting: hashing files [34/35] (97%)
i  hosting[agile-boost]: found 35 files in build
i  hosting[agile-boost]: beginning deploy...
✔  functions: functions folder uploaded successfully
i  functions: packaged functions (52.61 KB) for uploading
i  functions: preparing functions directory for uploading...
✔  functions: required API cloudbuild.googleapis.com is enabled
✔  functions: required API cloudfunctions.googleapis.com is enabled
i  functions: ensuring required API cloudbuild.googleapis.com is enabled...
i  functions: ensuring required API cloudfunctions.googleapis.com is enabled...
✔  database: rules syntax for database agile-boost is valid
i  database: checking rules syntax...
✔  functions: Finished running predeploy script.

> tsc
> functions@ build /workspace/functions

Running command: npm --prefix "$RESOURCE_DIR" run build

> tslint --project tsconfig.json
> functions@ lint /workspace/functions

Running command: npm --prefix "$RESOURCE_DIR" run lint
i  deploying database, functions, hosting

=== Deploying to 'xxxx'...

gcr.io/agile-boost/firebase:latest
Status: Downloaded newer image for gcr.io/agile-boost/firebase:latest
Digest: sha256:063a10dfecc2b3bb4245316fb89ae1588f594bb8bb6e950ecf6a9488015e20bb
38ee9b020816: Pull complete
ddf8c3713c7d: Pull complete
9819791ca1ba: Pull complete
19c9987a828c: Pull complete
40ba0f817ab5: Pull complete
8cdf70a16731: Pull complete
9819791ca1ba: Download complete
9819791ca1ba: Verifying Checksum
8cdf70a16731: Download complete
8cdf70a16731: Verifying Checksum
38ee9b020816: Download complete
38ee9b020816: Verifying Checksum
ddf8c3713c7d: Download complete
ddf8c3713c7d: Verifying Checksum
40ba0f817ab5: Download complete
40ba0f817ab5: Verifying Checksum
19c9987a828c: Download complete
19c9987a828c: Verifying Checksum
38ee9b020816: Waiting
ddf8c3713c7d: Waiting
9819791ca1ba: Waiting
38ee9b020816: Pulling fs layer
ddf8c3713c7d: Pulling fs layer
9819791ca1ba: Pulling fs layer
19c9987a828c: Pulling fs layer
40ba0f817ab5: Pulling fs layer
8cdf70a16731: Pulling fs layer
e5c5821cd889: Already exists
55abbc6cc158: Already exists
8439168fd8dc: Already exists
c159512f4cc2: Already exists
1b49aa113642: Already exists
4f250268ed6a: Already exists
latest: Pulling from agile-boost/firebase
Using default tag: latest
Pulling image: gcr.io/agile-boost/firebase

标签: firebasegoogle-cloud-functionsgoogle-cloud-build

解决方案


推荐阅读