PHPFixing
  • Privacy Policy
  • TOS
  • Ask Question
  • Contact Us
  • Home
  • PHP
  • Programming
  • SQL Injection
  • Web3.0

Monday, September 26, 2022

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

 September 26, 2022     continuous-deployment, firebase, google-cloud-functions     No comments   

Issue

Say I have the following four functions in my Firebase projects:

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

Now, these functions live in two separate Node packages, i.e. one that contains openDoor and closeDoor and another one that contains openWindow and closeWindow.

Error

If I try to run firebase deploy from the package with the door functions, the following error will be thrown (in non-interactive mode):

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

This is a problem because it will cancel any CD workflow that tries to deploy these functions.

Force delete

There is an option to force-delete any existing functions:

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

However, I want the opposite. I want to keep all existing functions.

Theoretical workaround

There is one workaround that I found would work in theory, which is:

yes N | firebase deploy --interactive

Piping N into the interactive deploy command, which will answer N to the deletion prompt:

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)

The problem now is that I am using https://github.com/w9jds/firebase-action to deploy the functions, which means that I need to have a built-in Firebase solution.


Solution

You can make use of the new codebases feature in Firebase.

By specifying a codebase in your firebase.json functions configuration, this problem is solved. The Firebase CLI will no longer prompt you to delete other functions as it only considers the functions of the same codebase.

If your firebase.json previously looked like this:

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

You only need to add "codebase": "<name>" to the config:

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

The deploy will now look like this:

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

Note that the actual function name does not change, i.e. the function will still only be called openWindow (without the prefix) in the Firebase / Google Cloud Console. So this is basically the perfect solution to the problem.



Answered By - creativecreatorormaybenot
Answer Checked By - Marie Seifert (PHPFixing Admin)
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
Newer Post Older Post Home

0 Comments:

Post a Comment

Note: Only a member of this blog may post a comment.

Total Pageviews

Featured Post

Why Learn PHP Programming

Why Learn PHP Programming A widely-used open source scripting language PHP is one of the most popular programming languages in the world. It...

Subscribe To

Posts
Atom
Posts
Comments
Atom
Comments

Copyright © PHPFixing