This Action for firebase-tools enables arbitrary actions with the firebase command-line client.
args- Required. This is the arguments you want to use for thefirebasecli
FIREBASE_TOKEN- Required if GCP_SA_KEY is not set. The token to use for authentication. This token can be aquired through thefirebase login:cicommand.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 theFirebase Adminrole in the project. If you're deploying functions, you would also need theCloud Functions Developerrole. Since the deploy service account is using the App Engine default service account in the deploy process, it also needs theService Account Userrole. If you're only doing Hosting,Firebase Hosting Adminis enough. https://firebase.google.com/docs/hosting/github-integrationPROJECT_ID- Optional. To specify a specific project to use for all commands. Not required if you specify a project in your.firebasercfile.PROJECT_PATH- Optional. The path to the folder containingfirebase.jsonif it doesn't exist at the root of your repository. e.g../my-app
To authenticate with Firebase, and deploy to Firebase Hosting:
name: Build and Deployon:
push:
branches:
- masterjobs:
build:
name: Buildruns-on: ubuntu-lateststeps:
- name: Checkout Repouses: actions/checkout@master
- name: Install Dependenciesrun: npm install
- name: Buildrun: npm run build-prod
- name: Archive Production Artifactuses: actions/upload-artifact@masterwith:
name: distpath: distdeploy:
name: Deployneeds: buildruns-on: ubuntu-lateststeps:
- name: Checkout Repouses: actions/checkout@master
- name: Download Artifactuses: actions/download-artifact@masterwith:
name: distpath: dist
- name: Deploy to Firebaseuses: w9jds/firebase-action@masterwith:
args: deploy --only hostingenv:
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 }}\"The Dockerfile and associated scripts and documentation in this project are released under the MIT License.
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)