Cupid Chan
Cupid Chan

Reputation: 865

How to set up one GitHub repo for multiple Google Cloud Functions?

I would like to setup one GitHub repo which will hold all backend Google Cloud Functions. But I have 2 questions:

  1. How can I set it up so that GCP knows that there are multiple Cloud Functions to be deployed?
  2. If I only change code for one Cloud Functions, how can I setup so that GCP will only deploy the modified Cloud Functions, and NOT to redeployed the unchanged onces?

Upvotes: 3

Views: 2699

Answers (2)

al-dann
al-dann

Reputation: 2725

As I understand, you would like to store cloud functions code in GitHub, and I assume you would like to trigger deployment on some action - push or pull request. At the same time, you would like only modified cloud functions be redeployed, leaving others without redeployment.

Every cloud function is your set is (re)deployed separately, - I mean the for each of them you might need to provide plenty of specific parameters, and those parameters are different for different functions. Details of those parameters are described in the gcloud functions deploy command documentation page.

Most likely the --entry-point - the name of the cloud function as defined in source code - is to be different for each of them. Thus, you might have some kind of a "loop" through all cloud functions for deployment with different parameters (including the name, entry point, etc.).

Such "loop" (or "set") may be implemented by using Cloud Build or Terraform or both of them together or some other tool.

An example how to deploy only modified cloud functions is provided in the How can I deploy google cloud functions in CI/CD without redeploying unchanged SO question/answer. That example can be extended into an arbitrary number of cloud functions. If you don't want to use Terraform, the similar mechanism (based not he same idea) can be implemented by using pure Cloud Build.

Upvotes: 1

Tarik Huber
Tarik Huber

Reputation: 7398

When saving your cloud function to a github repo just make sure to have in the gitignore file the proper settings. Exclude node_modules and such folder and files you don't want to commit.

Usualy all cloud functions are deployed trough a single index.js file. So here you need to make sure you have that and all files you import into it.

If you want to deploy a single function you can use this command:

firebase deploy --only functions:your_function_name

If you want to have a more structure solution you can read this article to learn more about it.

Upvotes: 3

Related Questions