• Stars
    star
    918
  • Rank 49,757 (Top 1.0 %)
  • Language
    Shell
  • License
    MIT License
  • Created almost 6 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

GitHub Action for interacting with Firebase

GitHub Actions for Firebase

This Action for firebase-tools enables arbitrary actions with the firebase command-line client.

If you want a more flexible implementation, an early version of a rewrite is available here: setup-firebase that allows you to choose node and java version and run more than one command.

Inputs

  • args - Required. This is the arguments you want to use for the firebase cli

Outputs

* response - The full response from the firebase command current run (Will most likely require a grep to get what you want, like URLS)

Response has been removed for now as it caused loads of issues in the bash script

Environment variables

  • GCP_SA_KEY - Required if FIREBASE_TOKEN is not set. A normal service account key (json format) or a base64 encoded service account key with the needed permissions for what you are trying to deploy/update.

    • Since the service account is using the App Engine default service account in the deploy process, it also needs the Service Account User role.
    • If deploying functions, you would also need the Cloud Functions Developer role.
      • If the deploy has scheduled functions, include the Cloud Scheduler Admin role.
      • If the deploy requires access to secrets, include the Secret Manager Viewer role.
      • If updating Firestore Rules, include the Firebase Rules Admin role.
    • If updating Firestore Indexes, include the Cloud Datastore Index Admin role.
    • If deplying Hosting files, include the Firebase Hosting Admin role.
    • For more details: https://firebase.google.com/docs/hosting/github-integration
  • FIREBASE_TOKEN - Required if GCP_SA_KEY is not set. This method will soon be deprecated, use GCP_SA_KEY instead. The token to use for authentication. This token can be aquired through the firebase login:ci command.

  • PROJECT_ID - Optional. To specify a specific project to use for all commands. Not required if you specify a project in your .firebaserc file. If you use this, you need to give Viewer permission roles to your service account otherwise the action will fail with authentication errors.

  • PROJECT_PATH - Optional. The path to the folder containing firebase.json if it doesn't exist at the root of your repository. e.g. ./my-app.

  • CONFIG_VALUES - Optional. The configuration values for Firebase function that would normally be set with firebase functions:config:set [value]. Example: CONFIG_VALUES: stripe.secret_key=SECRET_KEY zapier.secret_key=SECRET_KEY.

Example

To authenticate with Firebase, and deploy to Firebase Hosting:

name: Build and Deploy
on:
  push:
    branches:
      - master

jobs:
  build:
    name: Build
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repo
        uses: actions/checkout@master
      - name: Install Dependencies
        run: npm install
      - name: Build
        run: npm run build-prod
      - name: Archive Production Artifact
        uses: actions/upload-artifact@master
        with:
          name: dist
          path: dist
  deploy:
    name: Deploy
    needs: build
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repo
        uses: actions/checkout@master
      - name: Download Artifact
        uses: actions/download-artifact@master
        with:
          name: dist
          path: dist
      - name: Deploy to Firebase
        uses: w9jds/firebase-action@master
        with:
          args: deploy --only hosting
        env:
          FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}

Alternatively:

        env:
          GCP_SA_KEY: ${{ secrets.GCP_SA_KEY }}

If you have multiple hosting environments you can specify which one in the args line. e.g. args: deploy --only hosting:[environment name]

If you want to add a message to a deployment (e.g. the Git commit message) you need to take extra care and escape the quotes or the YAML breaks.

        with:
          args: deploy --message \"${{ github.event.head_commit.message }}\"

Alternate versions

Starting with version v2.1.2 each version release will point to a versioned docker image allowing for hardening our pipeline (so things don't break when I do something dump). On top of this, you can also point to a master version if you would like to test out what might not be deployed into a release yet by using something like this:

  name: Deploy to Firebase
  uses: docker://w9jds/firebase-action:master
  with:
    args: deploy --only hosting
  env:
    FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}

License

The Dockerfile and associated scripts and documentation in this project are released under the MIT License.

Recommendation

If you decide to do seperate jobs for build and deployment (which is probably advisable), then make sure to clone your repo as the Firebase-cli requires the firebase repo to deploy (specifically the firebase.json)

More Repositories

1

GDK-ProgressBar

ProgressBar for Glass GDK Menu Cards that look and work exactly like the ones Google Use.
Java
30
star
2

Gallery4Glass

Manage, Upload, and Create Vignettes with your pictures.
Java
28
star
3

setup-firebase

Firebase GitHub Action (replacement for firebase-action)
TypeScript
24
star
4

FloatingActionMenu

Floating Action Menu Android library built around the design FABs
Java
18
star
5

firebase-trigger

Github Action to update a field in a firebase database
TypeScript
16
star
6

beholder-bot

Discord Bot to help DMs run their RPG games!
Go
12
star
7

MarketBot

Market tool for Eve Online, powered by Firebase.
Java
8
star
8

GlassMenuExample

Hello World project to show how to display the menu on a single card view.
Java
7
star
9

CardScrollView-Example

Google Glass Card Scroll View Example
Java
5
star
10

new-eden-webapi

Account Management Abstraction Layer API for Eve Online SSO for global auth on all applications. Built on firebase!
TypeScript
4
star
11

DeLorean-v88

Professional grade conference template for any sized event. Built to be fast and flexible using React, Redux, Firebase Firestore, Firebase Cloud Functions, Firebase Storage, and Firebase Hosting. 44x better than v2
TypeScript
4
star
12

SongSearch

Releases of the Sound Search tool for Google Glass to help replace the one that Google removed.
3
star
13

Esplora-Sketches

All the sketches related to the Arduino Esplora
C++
2
star
14

Recorder4Glass

Record a Voice Note on Google Glass
Java
2
star
15

Android-EveProfiler

Logos
1
star
16

node-esi-stackdriver

npm module for EVE Online's ESI api with built in Stackdriver logging
TypeScript
1
star
17

blizzardgo

Golang package for authenticating and communicating with Blizzard's APIs
Go
1
star
18

unicorn

Unicorn is an open source projected aimed at working with the EVE Online community to create an amazing Android application.
Java
1
star
19

EveSSO-Android-Example

An android example implementing the new Eve Online Single Sign On oAuth System.
Java
1
star
20

LeapChromeMouse

Right now it only changes tabs when you swipe right or left over the Leap Motion.
C#
1
star