簡體   English   中英

如何在忽略現有功能的情況下部署 Cloud Functions?

[英]How do I deploy Cloud Functions while ignoring existing functions?

假設我的 Firebase 項目中有以下四個功能:

openDoor(europe-west1)
closeDoor(europe-west1)
openWindow(europe-west1)
closeWindow(europe-west1)

現在,這些函數存在於兩個單獨的 Node 包中,即一個包含openDoorcloseDoor另一個包含openWindowcloseWindow

錯誤

如果我嘗試使用門功能從 package 運行firebase deploy ,將拋出以下錯誤(在非交互模式下):

Error: The following functions are found in your project but do not exist in your local source code:
    openWindow(europe-west1)
    closeWindow(europe-west1)

這是一個問題,因為它將取消任何嘗試部署這些功能的 CD 工作流程。

強制刪除

有一個選項可以強制刪除任何現有功能:

  -f, --force              delete Cloud Functions missing from the current 
                           working directory without confirmation

但是,我想要相反的 我想保留所有現有功能。

理論解決方法

我發現有一種解決方法在理論上可行,即:

yes N | firebase deploy --interactive

N輸入到交互式部署命令中,該命令將對刪除提示回答N

The following functions are found in your project but do not exist in your local source code:
    openWindow(europe-west1)
    closeWindow(europe-west1)

If you are renaming a function or changing its region, it is recommended that you create the new function first before deleting the old one to prevent event loss. For more info, visit https://firebase.google.com/docs/functions/manage-functions#modify

? Would you like to proceed with deletion? Selecting no will continue the rest of the deployments. (y/N)

現在的問題是我正在使用https://github.com/w9jds/firebase-action來部署功能,這意味着我需要有一個內置的 Firebase 解決方案。

或者,您也可以在執行部署時 指定 function 名稱

firebase deploy --only functions:openDoor,functions:closeDoor

您可以使用Firebase 中的新代碼庫功能

通過在firebase.json functions配置中指定codebase ,這個問題就解決了。 Firebase CLI 將不再提示您刪除其他函數,因為它只考慮相同codebase的函數。

如果您的firebase.json以前看起來像這樣:

{
  "functions": {
    "source": "cloud_functions",
    "ignore": [...],
    "predeploy": [...],
    "postdeploy": [...]
  }
}

您只需要在配置中添加"codebase": "<name>"

{
  "functions": {
    "source": "cloud_functions",
    "codebase": "window",
    "ignore": [...],
    "predeploy": [...],
    "postdeploy": [...]
  }
}

部署現在將如下所示:

i  functions: updating Node.js 16 function window:openWindow(europe-west1)...
i  functions: updating Node.js 16 function window:closeWindow(europe-west1)...

請注意,實際的 function 名稱不會更改,即 function 在 Firebase / Google Cloud Console 中仍將僅稱為openWindow (不帶前綴)。 所以這基本上是問題的完美解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM