Firebase Cloud Functions development environment in Gitpod

For me currently Gitpod is the best IDE for Chrome OS users. Not only because it is cloud based with web interface, but because it allows you to set up and run full development environment almost for any purpose not depending on my local system and hardware. The second big thing is that you can switch from one environment to another completely different in a minutes. From time to time I’m realizing there is another project I can run in Gitpod with simple configuration.

Today we gonna set up Firebase Cloud Functions project in Gitpod.

Assuming we already have a project with cloud functions. After launching it in Gitpod first of all we need to install firebase tools. Node.js and Node Package Manager are already preinstalled in default Gitpod environment so we just need to npm install -g firebase-tools in console of launched Gitpod environment. Then we need to install our dependencies. Assuming my_project is a name of our project lets navigate to functions folder with cd /workspace/my_project/functions and make npm install.

After all dependencies will be installed we’ll need to login to our Firebase account. By default running firebase login will open your default browser but it is not possible in Gitpod. We will need to initiate login process with

firebase login:ci --no-localhost

This will output a login url to the console:


and you’ll need to navigate there with your browser by Ctrl+Click.

After successful login you’ll be provided with authentication code. Just copy it and go back to Gitpod console to paste it and hit Enter. You’ll get the message:

✔  Success! Use this token to login on a CI server:

You need to use provided token to execute commands. For example:

firebase deploy --token "1//038okfzGYjJ0fCgYIARAAGAMSNwF-L9IrN6hf6HG8ELcxmrrksTNr3e7kjjbkbybu7GgjU7qQhMKHJjLGE6MSPeqWm_uPGVg"

That’s it. We are ready to write functions and deploy it to Firebase.

We can automate the process described here by adding .gitpod.yml file to our project:

  - init: |
      echo "Installing Firebase tools..."
      npm install -g firebase-tools
      cd /workspace/my_project/functions
      echo "Getting dependencies..."
      npm install
    command: |
      cd /workspace/my_project/functions
      echo "Make sure we are using the latest versions of Firebase tools and libraries..."
      npm install firebase-functions@latest firebase-admin@latest --save
      npm install -g firebase-tools
      echo "Logging in..."
      firebase login:ci --no-localhost