{"id":13468616,"url":"https://github.com/prescottprue/firebase-ci","last_synced_at":"2026-02-27T02:02:50.699Z","repository":{"id":18697093,"uuid":"85018352","full_name":"prescottprue/firebase-ci","owner":"prescottprue","description":"Simplified Firebase interaction for continuous integration","archived":false,"fork":false,"pushed_at":"2023-01-16T21:01:22.000Z","size":1253,"stargazers_count":72,"open_issues_count":17,"forks_count":8,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-10-26T03:42:23.990Z","etag":null,"topics":["continuous-integration","deployment","environments","firebase","travis-ci"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/prescottprue.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":"prescottprue","patreon":"prescottprue","open_collective":"react-redux-firebase"}},"created_at":"2017-03-15T02:13:16.000Z","updated_at":"2025-09-02T16:14:24.000Z","dependencies_parsed_at":"2023-02-10T06:15:16.298Z","dependency_job_id":null,"html_url":"https://github.com/prescottprue/firebase-ci","commit_stats":null,"previous_names":[],"tags_count":47,"template":false,"template_full_name":null,"purl":"pkg:github/prescottprue/firebase-ci","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prescottprue%2Ffirebase-ci","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prescottprue%2Ffirebase-ci/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prescottprue%2Ffirebase-ci/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prescottprue%2Ffirebase-ci/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prescottprue","download_url":"https://codeload.github.com/prescottprue/firebase-ci/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prescottprue%2Ffirebase-ci/sbom","scorecard":{"id":744584,"data":{"date":"2025-08-11","repo":{"name":"github.com/prescottprue/firebase-ci","commit":"b692fbfea72b1717419a83632c09ab49bc620d1e"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.5,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 1/25 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/publish.yml:1","Warn: no topLevel permission defined: .github/workflows/verify.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/prescottprue/firebase-ci/publish.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/prescottprue/firebase-ci/publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/prescottprue/firebase-ci/publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/prescottprue/firebase-ci/publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:58: update your workflow using https://app.stepsecurity.io/secureworkflow/prescottprue/firebase-ci/publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/verify.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/prescottprue/firebase-ci/verify.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/verify.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/prescottprue/firebase-ci/verify.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/verify.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/prescottprue/firebase-ci/verify.yml/master?enable=pin","Warn: downloadThenRun not pinned by hash: .github/workflows/publish.yml:79","Warn: npmCommand not pinned by hash: .github/workflows/publish.yml:80","Warn: downloadThenRun not pinned by hash: .github/workflows/verify.yml:42","Warn: npmCommand not pinned by hash: .github/workflows/verify.yml:44","Info:   0 out of   7 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   2 downloadThenRun dependencies pinned","Info:   0 out of   2 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'","Warn: branch protection not enabled for branch 'next'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 26 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"30 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-67hx-6x53-jw92","Warn: Project is vulnerable to: GHSA-v88g-cgmw-v5xw","Warn: Project is vulnerable to: GHSA-93q8-gq69-wqmw","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-w8qv-6jwh-64r5","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-gxpj-cx7g-858c","Warn: Project is vulnerable to: GHSA-w573-4hg7-7wgq","Warn: Project is vulnerable to: GHSA-2j2x-2gpw-g8fm","Warn: Project is vulnerable to: GHSA-4q6p-r6v2-jvc5","Warn: Project is vulnerable to: GHSA-ww39-953v-wcq6","Warn: Project is vulnerable to: GHSA-43f8-2h32-f4cj","Warn: Project is vulnerable to: GHSA-9c47-m6qq-7p4h","Warn: Project is vulnerable to: GHSA-6c8f-qphg-qjgp","Warn: Project is vulnerable to: GHSA-29mw-wpgm-hmr9","Warn: Project is vulnerable to: GHSA-35jh-r3h4-6jhm","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-vh95-rmgr-6w4m","Warn: Project is vulnerable to: GHSA-xvch-5gv4-984h","Warn: Project is vulnerable to: GHSA-hj48-42vr-x3v9","Warn: Project is vulnerable to: GHSA-9wv6-86v2-598j","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-44c6-4v22-4mhx","Warn: Project is vulnerable to: GHSA-4x5v-gmq8-25ch","Warn: Project is vulnerable to: GHSA-j8xg-fqg3-53r7","Warn: Project is vulnerable to: GHSA-c4w7-xm78-47vh","Warn: Project is vulnerable to: GHSA-p9pc-299p-vxgp"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-22T18:22:15.680Z","repository_id":18697093,"created_at":"2025-08-22T18:22:15.680Z","updated_at":"2025-08-22T18:22:15.680Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29882627,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-26T23:51:21.483Z","status":"online","status_checked_at":"2026-02-27T02:00:06.759Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["continuous-integration","deployment","environments","firebase","travis-ci"],"created_at":"2024-07-31T15:01:14.947Z","updated_at":"2026-02-27T02:02:45.683Z","avatar_url":"https://github.com/prescottprue.png","language":"JavaScript","funding_links":["https://github.com/sponsors/prescottprue","https://patreon.com/prescottprue","https://opencollective.com/react-redux-firebase"],"categories":["JavaScript","CLI \u0026 에디터"],"sub_categories":["iOS"],"readme":"# firebase-ci\n\n\u003e Simplified Firebase interaction for continuous integration\n\n[![NPM version][npm-image]][npm-url]\n[![Build Status][build-status-image]][build-status-url]\n[![Code Coverage][coverage-image]][coverage-url]\n[![License][license-image]][license-url]\n\u003c!-- [![semantic-release][semantic-release-icon]][semantic-release-url] --\u003e\n[![Code Style][code-style-image]][code-style-url]\n\n## Features\n\n* Deploy to different Firebase projects based on Git Branch\n* Automatically use commit message as deploy message\n* Expose CI environment variables based on branch name\n* Mapping of CI environment variables to Firebase Functions Config\n* Optional Deploying of targets Functions, Hosting, Database (rules) and Storage (rules)\n* Skip For Pull Requests\n\n## Getting Started\n\n1. Generate a CI token through `firebase-tools` by running `firebase login:ci`\n1. Place this token within your CI environment under the variable `FIREBASE_TOKEN`\n1. Install `firebase-ci` into your project (so it is available on your CI): `npm install --save-dev firebase-ci firebase-tools`. If you don't want `firebase-tools` as a dev dependency, it can be left out as it is installed automatically if it doesn't exist.\n1. Set different Firebase project names in `projects` parameter of `.firebaserc`. The project aliases should match branch names like so:\n\n    ```json\n    {\n      \"projects\": {\n        \"prod\": \"prod-firebase\",\n        \"master\": \"dev-firebase\",\n        \"default\": \"dev-firebase\"\n      }\n    }\n    ```\n\n1. Add calls to the scripts within to your CI stages, here are a few example snippets:\n\n      **Github Actions** (*.github/workflows/\\*.yml*)\n      ```yaml\n      jobs:\n        deploy:\n          name: ${{ matrix.app }} Deploy\n          runs-on: ubuntu-18.04\n          steps:\n            - name: Checkout Code\n              uses: actions/checkout@v2\n            \n            ## Place other steps for installing deps, building, etc. here\n            ## See the github-actions example for a full workflow\n\n            # Deploy to Firebase project matching branch name in projects parameter of .firebaserc\n            - name: Deploy To Firebase\n              run: |\n                $(npm bin)/firebase-ci deploy\n      ```\n\n      **Travis** (*travis.yml*)\n      ```yaml\n      script:\n        # Deploy to Firebase project matching branch name in projects parameter of .firebaserc\n        - $(npm bin)/firebase-ci deploy\n      ```\n\n    **NOTES**:\n    * `firebase-ci` can be used through the nodejs `bin` **OR** installed globally (npm bin is used here since instructions include adding firebase-ci as a dev dependency)\n    * `firebase-tools` will be installed (from `@latest`) if it is not already installed locally or globally\n\n\n## Setting Project\n\nThere are a number of ways to set which Firebase project within `.firebaserc` is being used when running actions. Below is the order of for how the project is determined (default at bottom):\n\n* `FIREBASE_CI_PROJECT` environment variable (overrides all)\n* branch name (dependent on CI provider):\n  * Github Actions - `GITHUB_HEAD_REF` or `GITHUB_REF` (`refs/heads/` prefix is removed)\n  * Travis-CI - `TRAVIS_BRANCH`\n  * Gitlab - `CI_COMMIT_REF_SLUG`\n  * Circle-CI - `CIRCLE_BRANCH`\n  * wercker - `WERCKER_GIT_BRANCH`\n  * drone-ci - `DRONE_BRANCH`\n  * codeship - `CI_BRANCH`\n  * bitbucket - `BITBUCKET_BRANCH`\n* fallback name (dependent on CI provider)\n  * Gitlab - `CI_ENVIRONMENT_SLUG`\n* `master`\n* `default` (must be set within `.firebaserc`)\n\n\n\u003c!-- Uncomment when next version is applicable\n## Other Versions\nDefault installation uses `@latest` tag, but there are also others:\n\n* `react-redux-firebase@next` - upcoming version (currently `v0.2.0` progress)\n--\u003e\n\n## [Examples](/examples)\n\nExamples are the same basic html file upload to Firebase hosting of different projects (or \"environments\") for different CI providers:\n\n* [Travis](/examples/travis)\n* [Github Actions](/examples/github-actions)\n\n## Why?\n\nAdvanced configuration of Firebase deployment is often necessary when deploying through continuous integration environment. Instead of having to write and invoke your own scripts, `firebase-ci` provides an easy way to  create/modify advanced configurations.\n\n## FAQ\n\n1. What about [Travis's `firebase`](https://docs.travis-ci.com/user/deployment/firebase/) deploy option?\n\n    Using the built in [travis firebase deploy tool](https://docs.travis-ci.com/user/deployment/firebase/) is actually a perfect solution if you want to do general deployment. You can even include the following to install stuff functions dependencies on Travis:\n\n    ```yaml\n    after_success:\n      - npm install --prefix ./functions\n\n    deploy:\n      provider: firebase\n      project: $TRAVIS_BRANCH\n      skip_cleanup: true\n      token:\n        secure: $FIREBASE_TOKEN\n    ```\n\n    This lets you deploy to whatever instance you want based on your branch (and config in `.firebaserc`).\n\n    `firebase-ci` is for more advanced implementations including only deploying functions, hosting\n\n## Commands\n\n* [`copyVersion`](#createversion) - Copy version from `package.json` to `functions/package.json`\n* [`createConfig`](#createconfig) - Create a config file based on CI environment variables (defaults to `src/config.js`)\n* [`deploy`](#deploy) - Deploy to Firebase project matching branch name in `.firebaserc` (runs other `firebase-ci` actions by default unless `-s` is passed)\n* [`serve`](#serve) - Serve a the Firebase project matching branch name in `.firebaserc` using `firebase serve`\n* [`mapEnv`](#mapenv) - Map environment variables from CI Environment to Firebase functions environment\n* [`project`](#project) - Output project name associated with CI environment (useful for commands that should be run for each environment)\n\n### copyVersion\n\nIt can be convenient for the version within the `functions/package.json` file to match the top level `package.json`. Enabling the `copyVersion` option, automatically copies the version number when calling `deploy` if the following config is provided:\n\n```json\n\"ci\": {\n  \"copyVersion\": true\n}\n```\n\n### setEnv\n\nExpose environment variables to CI based on current branch.\n\nWith a `.firebaserc` that looks like so:\n\n```yaml\n\"ci\": {\n  \"setEnv\": {\n    \"master\": {\n      \"SOME_VAR\": \"some value\"\n      \"REACT_APP_ENV_VARIABLE\": \"val passed to react app\"\n    },\n    \"prod\": {\n      \"SOME_VAR\": \"some other value\"\n      \"REACT_APP_ENV_VARIABLE\": \"val passed to react app\"\n    }\n  }\n}\n```\n\n`SOME_VAR` and `REACT_APP_ENV_VARIABLE` will be exposed to environment variables of your CI based on branch. Meaning that on the master branch `SOME_VAR` will be set to `\"some value\"`\n\n### createConfig\n\n**DEPRECATED**\n\nCreate a config file based on CI environment variables (defaults to `src/config.js`). Allows for creating files of different types based on the extension passed.\n\nWith the following environment variables:\n`GA_TRACKINGID` - Your google analytics tracking id\n`INT_FIREBASE_WEBAPIKEY` - API key of your integration/main Firebase instance (this can also be hard coded if you prefer since it doesn't)\n`PROD_FIREBASE_WEBAPIKEY` - API key of your production Firebase instance\n\nAnd a `.firebaserc` that looks like so:\n\n```json\n\"ci\": {\n  \"createConfig\": {\n    \"master\": {\n      \"version\": \"${npm_package_version}\",\n      \"gaTrackingId\": \"${GA_TRACKINGID}\",\n      \"firebase\": {\n        \"apiKey\": \"${INT_FIREBASE_WEBAPIKEY}\",\n        \"authDomain\": \"firebase-ci-int.firebaseapp.com\",\n        \"databaseURL\": \"https://firebase-ci-int.firebaseio.com\",\n        \"projectId\": \"firebase-ci-int\",\n        \"storageBucket\": \"firebase-ci-int.appspot.com\"\n      }\n    },\n    \"prod\": {\n      \"version\": \"${npm_package_version}\",\n      \"gaTrackingId\": \"${GA_TRACKINGID}\",\n      \"firebase\": {\n        \"apiKey\": \"${PROD_FIREBASE_WEBAPIKEY}\",\n        \"authDomain\": \"firebase-ci.firebaseapp.com\",\n        \"databaseURL\": \"https://firebase-ci.firebaseio.com\",\n        \"projectId\": \"firebase-ci\",\n        \"storageBucket\": \"firebase-ci.appspot.com\"\n      }\n    }\n  }\n}\n```\n\nbuilding on master branch, produces a file in `src/config.js` that looks like so:\n\n```js\nexport const version = \"0.0.1\" // or whatever version your package is\nexport const gaTrackingId = \"123GA\" // your google analytics tracking ID\n\nexport const firebase = {\n  apiKey: \"\u003c- your app API key -\u003e\",\n  authDomain: \"\u003c- your app name -\u003e.firebaseapp.com\",\n  databaseURL: \"https://\u003c- your app name -\u003e.firebaseio.com\",\n  projectId: \"\u003c- your app name -\u003e\",\n  storageBucket: \"\u003c- your app name -\u003e.appspot.com\"\n}\n\nexport default { version, gaTrackingId, firebase }\n```\n\n#### Options\n\nOptions can be passed as flags or within an options object if calling action as a function\n\n`--project` - Project within .firebaserc to use when creating config file. Defaults to `\"default\"` then to `\"master\"`\n`--path` - Path to save the config file. Defaults to src/config.js\n\n### deploy\n\n`firebase-ci deploy`\n\n**Options:**\n* [Simple mode](#simple-mode)\n* [Info](#info-option)\n* [Only](#only-option)\n\nDeploy to Firebase. Following the API of `firebase-tools`, specific targets (i.e. `functions, hosting`) can be specified for deployment.\n\n#### Default\n\n* Everything skipped on Pull Requests\n* Deployment goes to default project\n* If you have a `functions` folder, `npm install` will be run for you within your `functions` folder\n* [`copyVersion`](#copyversion) is called before deployment based on settings in `.firebaserc`, if you don't want this to happen, use simple mode.\n* [`mapEnv`](#mapenv) is called before deployment based on settings in `.firebaserc`, if you don't want this to happen, use simple mode.\n\n#### Simple Mode\n\nOption: `--simple`\nFlag: `-s`\n\nSkip all `firebase-ci` actions and only run Firebase deployment\n\n#### Info Option\n\nOption : `--info`\nFlag: `-i`\n\nProvide extra information from internal actions (including npm install of `firebase-tools`).\n\n#### Only Option\n\nOption : `--only`\nFlag: `-o`\n\nFirebase targets to include (passed directly to firebase-tools)\n\n#### Except Option\n\nOption : `--except`\n\nDeploy to all targets except specified (e.g. \"database\")\n\n#### Force Option\n\nOption : `--force`\nFlag: `-f`\n\nDelete Cloud Functions missing from the current working directory without confirmation\n\n##### Skipping Deploying Functions\n\nIf you have a functions folder, your functions will automatically deploy as part of using `firebase-ci`. For skipping this functionality, you may use the only flag, similar to the API of `firebase-tools`.\n\n```yaml\nscript:\n  - $(npm bin)/firebase-ci deploy --only hosting\n```\n\n### serve\n\n`firebase-ci serve`\n\n**Options:**\n* [only](#only-option)\n\nServe using to `firebase serve`. Following the API of `firebase-tools`, specific targets (i.e. `functions, hosting`) can be specified for serving.\n\n#### Default\n\n* Project alias matching branch name is served\n* If there is no matching alias, `default` project is used\n\n#### Only Option\n\nOption : `--only`\nFlag: `-o`\n\nFirebase targets to include (passed directly to firebase-tools)\n\n### mapEnv\n\n`firebase-ci mapEnv`\n\nSet Firebase Functions variables based on CI variables. Does not require writing any secure variables within config files.\n\n**NOTE**: Called automatically during `firebase-ci deploy`\n\nSet the `mapEnv` parameter with an object containing the variables you would like to map in the following pattern:\n\n```\nTRAVIS_VAR: \"firebase.var\"\n```\n\n##### Example\nCI variable is SOME_TOKEN=\"asdf\" and you would like to set it to `some.token` on Firebase Functions you would provide the following config:\n\n```json\n\"ci\": {\n  \"mapEnv\": {\n    \"SOME_TOKEN\": \"some.token\"\n  }\n}\n```\n\nInternally calls `firebase functions:config:set some.token=\"asdf\"`. This will happen for every variable you provide within mapEnv.\n\n### skipDependenciesInstall\n\nSkip installing of dependencies including `firebase-tools` and `node_modules` within `functions` folder\n\n### skipToolsInstall\n\nSkip installing of `firebase-tools` (installed by default when calling `firebase-ci deploy` without simple mode)\n\n### skipFunctionsInstall\n\nSkip running `npm install` within `functions` folder (`npm install` is called within `functions` folder by default when calling `firebase-ci deploy`).\n\n### project\n\nGet name of project associated with the CI environment\n\n##### Example\n\n```bash\necho \"Project to deploy to $(firebase-ci project)\"\n```\n\n### projectID\n\nGet the projectId associated with the CI environment. Initially loaded from `ci.createConfig.${branchName}.firebase.projectId` and falls back to project from `project` command\n\n##### Example\n\n```bash\necho \"Project ID from config $(firebase-ci projectId)\"\n```\n\n### branch\n\nGet the branch associated with the CI environment (loaded from environment variables)\n\n##### Example\n\n```bash\necho \"Branch name from ci env $(firebase-ci branch)\"\n```\n\n### Roadmap\n\n* `setCORS` option for copying CORS config file to Cloud Storage Bucket\n* only setting non existent env vars with `mapEnv`\n* Support for Continuous Integration Tools other than Travis-CI\n\n[npm-image]: https://img.shields.io/npm/v/firebase-ci.svg?style=flat-square\n[npm-url]: https://npmjs.org/package/firebase-ci\n[climate-image]: https://img.shields.io/codeclimate/github/prescottprue/firebase-ci.svg?style=flat-square\n[climate-url]: https://codeclimate.com/github/prescottprue/firebase-ci\n[coverage-image]: https://img.shields.io/codecov/c/github/prescottprue/firebase-ci.svg?style=flat-square\n[coverage-image-next]: https://img.shields.io/codecov/c/github/prescottprue/firebase-ci/next.svg?style=flat-square\n[coverage-url]: https://codecov.io/gh/prescottprue/firebase-ci\n[license-image]: https://img.shields.io/npm/l/firebase-ci.svg?style=flat-square\n[license-url]: https://github.com/prescottprue/firebase-ci/blob/master/LICENSE\n[code-style-image]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square\n[code-style-url]: http://standardjs.com/\n[semantic-release-icon]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg?style=flat-square\n[semantic-release-url]: https://github.com/semantic-release/semantic-release\n[build-status-image-og]: https://github.com/prescottprue/firebase-ci/workflows/NPM%20Package%20Publish/badge.svg?style=flat-square\n[build-status-image]: https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Fprescottprue%2Ffirebase-ci%2Fbadge\u0026label=build\u0026style=flat-square\n[build-status-image-next]: https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Fprescottprue%2Ffirebase-ci%2Fbadge%3Fref%3Dnext\u0026label=build\u0026style=flat-square\n[build-status-url]: https://github.com/prescottprue/firebase-ci/workflows/publish.yml/badge.svg?branch=next","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprescottprue%2Ffirebase-ci","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprescottprue%2Ffirebase-ci","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprescottprue%2Ffirebase-ci/lists"}