![](/img/trans.png)
[英]How to exclude ServiceAccountKey.json when I deploy 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 包中,即一個包含openDoor
和closeDoor
,另一個包含openWindow
和closeWindow
。
如果我嘗試使用門功能從 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.