- Install
firebase-tools
package (you can choose the package manager and the version to use) - Authenticate with service account key (recommanded) or firebase token
- Use specific project
- Launch the firebase command you want
⚠️ This action installfirebase-tools
npm package, so you have to setup node before using it.
# ...
jobs:
buildAndDeploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
# You need to setup node before using the action
- uses: actions/setup-node@v3
with:
node-version: 16.x
cache: npm
# Add any steps. For example:
# - run: npm ci && npm build
- uses: pchmn/firebase-cli-github-action@main
with:
serviceAccountKey: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_KEY }}
projectId: your-projectId
args: deploy --only functions
# or:
# args: deploy --only hosting
# args: deploy --only firestore:rules
Name | Note | Description |
---|---|---|
packager |
(default to npm ) |
The package manager to use to install the CLI. See examples |
version |
(default to latest ) |
The firebase-tools version to install |
serviceAccountKey |
(required if token not set) |
The service account key (JSON format) to use to authenticate with. See instructions |
token |
(required if serviceAccountKey not set) |
The firebase token to use to authenticate with. |
projectId |
The project to use | |
args |
Additional arguments to pass to the CLI. Example: deploy --only functions |
yarn:
# ...
jobs:
jobName:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 16.x
cache: yarn
# ...
- uses: pchmn/firebase-cli-github-action@main
with:
packager: yarn
# other options
pnpm:
# ...
jobs:
jobName:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: pnpm/action-setup@v2
with:
version: 7.x
- uses: actions/setup-node@v3
with:
node-version: 16.x
cache: pnpm
# ...
- uses: pchmn/firebase-cli-github-action@main
with:
packager: pnpm
# other options
You don't have to use args
option, and you can launch firebase command in other steps after setting up the CLI.
# ...
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 16.x
cache: npm
# ...
- uses: pchmn/firebase-cli-github-action@main
with:
# options
# firebase command is now accessible
- run: firebase deploy --only functions
1. Get a service account for your project (you can create one on GCP Service Accounts page) with any of these roles according to your needs:
Service Account User
: required for CLI deploysCloud Functions Admin
: required to deploy functionsCloud Scheduler Admin
: required to deploy schedulded functionsFirebase Rules Admin
: required to deploy Firestore/Firebase rulesCloud Datastore Index Admin
: required to deploy Firestore indexesFirebase Hosting Admin
: required to deploy hostingFirebase Authentication Admin
: required to add preview URLs to Auth authorized domains
- Create and download your service account JSON key (see here)
- Add the content of JSON file as a secret in your repository (example:
FIREBASE_SERVICE_ACCOUNT_KEY
) and use it asserviceAccountKey
option:
- uses: pchmn/firebase-cli-github-action@main
with:
serviceAccountKey: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_KEY }}
⚠️ This authentication method is deprecated, and is not recommanded. You should use a service account key instead
Run firebase login:ci
in your terminal to get a token. Then add it as a secret in your repository (example: FIREBASE_TOKEN
) and use it as token
option:
- uses: pchmn/firebase-cli-github-action@main
with:
token: ${{ secrets.FIREBASE_TOKEN }}
This project is released under the MIT License.