4
votes

I have functions deployed to gcloud functions and i want to configure CI/CD for deploying this functions from gitlab. To do any operations from gitlab i need to get firebase auth token with

firebase login:ci

command.

The problem is that i need to get this token using gcloud service account, which is not displayed in browser, when i run

firebase login:ci

I have this service account data (project_id, private_key, private_key_id, etc.)

How should i authorize using this acc?

3
Hi, as @Michael Bleigh mentioned, services using ADC first search for credentials within a GOOGLE_APPLICATION_CREDENTIALS environment variable.Unless you specifically require ADC to use other credentials (for example, user credentials), you should set this environment variable to point to your service account key file (the .json file downloaded when you created a service account key. Could you please let us know if this solution works for you?Andie Vanille

3 Answers

14
votes

If you set an environment variable called GOOGLE_APPLICATION_CREDENTIALS as a path pointing to your service account JSON file, the Firebase CLI will automatically pick that up and use it to authorize commands. You don't need to be logged in or provide a --token argument when this is the case.

1
votes

If anyone finds this and is wondering how to do it on CircleCI, this worked for me.

  1. Generate a json file key for you service account in the GCP Console
  2. Set the json to a CircleCI environment variable at the org level or the project level
    • We use one at the org level called GSA_KEY
  3. In your workflow config, before you run the firebase command, run this command:
    • echo echo $GSA_KEY > "$HOME"/gcloud.json
  4. Then run your firebase deploy command, first setting the path to GOOGLE_APPLICATION_CREDENTIALS

The deployment run looks like:

steps:
  - checkout
  - run:
      name: Create SA key JSON
      command: echo $GSA_KEY > "$HOME"/gcloud.json
  - run:
      name: Deploy to Firebase
      command:
        GOOGLE_APPLICATION_CREDENTIALS="$HOME"/gcloud.json firebase deploy [project specific stuff]
0
votes

Use command:

gcloud auth activate-service-account [email protected]  --key-file=/path/to/file.json --project=project-id
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/file.json"