Приложение для управления приложениями Firebase. Включает поддержку нескольких сред и миграций данных
вскоре
Заинтересованы в добавлении функции или внесении вклад? Пожалуйста, откройте проблему!
Поскольку это исходный код, отличным местом для начала является проверка размещенной версии Fireadmin, доступной по адресу wireadmin.io.
Во время развития вы, вероятно, будете полагаться в основном на npm start
; Однако в вашем распоряжении есть дополнительные сценарии:
yarn <script> | Описание |
---|---|
start | Обслуживает ваше приложение по адресу localhost:3000 |
start:dist | localhost:3000 firebase serve в ./dist |
functions:start | Запускает функции, переписывая локально (использует firebase functions:shell |
functions:build | Строит облачные функции в ./functions/dist |
functions:test | Запускает функции модульные тесты с мокко |
build | Строит приложение к ./dist |
test | Запускает тесты E2E с Cypress. Смотрите тестирование |
lint | Проект проекта по потенциальным ошибкам |
lint:fix | Lints The Project и исправляет все исправляемые ошибки |
Хаски используется для обеспечения возможностей крючка prepush
. Сценарий prepush
в настоящее время запускает eslint
, который не даст вам наставления, если в вашем коде есть какая -то Lint. Если вы хотите отключить это, удалите сценарий prepush
из package.json
.
├── .github # Github Settings + Github Actions Workflows
│ ├── deploy.yml # Deploy workflow (called on merges to "master" and "production" branches)
│ └── verify.yml # Verify workflow (run when PR is created)
├── cypress # UI Integration Tests
├── docs # Docs application (built with Gatsby)
│ ├── content # Content of docs (written in markdown)
│ ├── components # React components used in docs app
│ ├── gatsby-config.js # Gatsby plugin settings
│ └── gatsby-node.js # Gatsby node definitions (how templates are combined with content)
│ └── package.json # Docs package file (docs specific dependencies)
├── functions # Cloud Functions (uses Cloud Functions for Firebase)
│ ├── src # Cloud Functions Source code (each folder represents a function)
│ └── index.js # Functions entry point
├── public # Public assets
│ ├── favicon.ico # Favicon
│ ├── firebase-messaging.sw.js # Messaging Service worker (loaded by Firebase SDK)
│ └── index.html # Main HTML page container for app
├── src # Application source code
│ ├── components # Global Reusable Presentational Components
│ ├── containers # Global Reusable Container Components
│ ├── layouts # Components that dictate major page structure
│ │ └── CoreLayout # Global application layout in which to render routes
│ ├── routes # Main route definitions and async split points
│ │ ├── index.js # Bootstrap main application routes with store
│ │ └── Home # Fractal route
│ │ ├── index.js # Route definitions and async split points
│ │ ├── assets # Assets required to render components
│ │ ├── components # Presentational React Components
│ │ ├── modules # Collections of reducers/constants/actions
│ │ └── routes ** # Fractal sub-routes (** optional)
│ ├── static # Static assets
│ └── utils # Application-wide utils (form validation etc)
├── .firebaserc # Firebase project settings (including settings for CI deployment)
├── cypress.json # Cypress Integration Test settings
├── database.rules.json # Firebase Real Time Database Rules
├── firebase.json # Firebase resource settings (including which folders are deployed)
├── firestore.indexes.json # Firestore Indexes
├── firestore.rules # Firestore Database Rules
└── storage.rules # Cloud Storage Rules
^10.18.0
(Узел 10 предложен для соответствия новейшим временным функциям выполнения)npm i -g firebase-tools
Установить зависимости: yarn install
Создайте веб -приложение в консоли Firebase вашего проекта (config будет использоваться на следующем шаге)
Создайте .env.local
, который имеет следующий формат (с вашими значениями, заполненными предыдущим шагом):
REACT_APP_FIREBASE_apiKey= < - api key - >
REACT_APP_FIREBASE_authDomain= < - auth domain - >
REACT_APP_FIREBASE_databaseURL= < - database URL - >
REACT_APP_FIREBASE_projectId= < - project ID - >
REACT_APP_FIREBASE_storageBucket= < - storageBucket - >
REACT_APP_FIREBASE_messagingSenderId= < - message sender ID - >
REACT_APP_FIREBASE_appId= < - project app id - >
REACT_APP_FIREBASE_PUBLIC_VAPID_KEY= < - project app id - >
REACT_APP_ALGOLIA_APP_ID= < - - >
REACT_APP_ALGOLIA_API_KEY= < - - >
Создать functions/.runtimeconfig.json
, который выглядит так:
{
"algolia" : {
"api_key" : " <- your API KEY -> " ,
"app_id" : " <- your Algolia APP ID -> "
},
"gmail" : {
"email" : " <- gmail account for sending invite emails -> " ,
"password" : " <- password for ^ email -> "
},
"encryption" : {
"password" : " <- your own made up encryption password for service accounts -> "
}
}
Установить функции переменных конфигурации в соответствии с только что сделанным файлом (для развернутой версии ваших функций):
firebase functions:config:set $( jq -r ' to_entries[] | [.key, (.value | tojson)] | join("=") ' < functions/.runtimeconfig.json )
Построение проекта: yarn build
Развертывание в Firebase: firebase deploy
(развертывания, облачные функции, правила и хостинг)
Сервер разработки начала: npm start
Примечание: вы также можете использовать yarn start:dist
чтобы проверить, как будет работать ваше приложение при развертывании в Firebase
Посмотреть развернутую версию сайта, запустив firebase open hosting:site
Примечание : конфигурация для этого находится в .github/workflows/app-deploy.yml
. firebase-ci
был добавлен для упрощения процесса развертывания CI путем получения настроек от .firebaserc
. Все, что требуется, это обеспечение аутентификации с помощью Firebase:
Иметь как минимум два проекта Firebase для использования, по одному для каждой среды (постановка и производство)
targets
projects
ci
.firebaserc
Вход в систему: firebase login:ci
для генерации токена аутентификации. Этот токен будет использоваться для предоставления правам поставщика CI на развертывание от вашего имени. Настройки предоставляются для Gitlab, но любой поставщик CI может быть использован.
Установить переменную среды FIREBASE_TOKEN
в секретах действий GitHub
Добавьте следующие переменные среды в переменные GitHub Actions (внутри /settings/ci_cd
):
FIREBASE_TOKEN ; // Used to deploy to Firebase (token generated in last step)
CYPRESS_RECORD_KEY ; // Record key for Cypress Dashboard
SERVICE_ACCOUNT ; // Used to authenticate with database to run hosted tests
Запустите строительство действий GitHub, выдвинув код в свой GIT Remote (скорее всего, GitHub)
Для получения дополнительных вариантов настройки CI. Проверьте документы Firebase-CI.
yarn build
firebase deploy
Примечание. Вы можете использовать firebase serve
, чтобы проверить, как будет работать ваше приложение при развертывании в Firebase, но сначала убедитесь, что вы запустите yarn build
.Документация доступна по адресу wareadmin.io/docs
Весь исходный код и контент для документов находятся в папке docs
. Документы генерируются из Markdown в статические файлы с использованием Gatsby на основе настроек в gatsby-config.js
.
Посетите Docs Readme для получения дополнительной информации.
ПРИМЕЧАНИЕ . Если у вас есть развертывание CI, тесты E2E и модульные тесты могут автоматически работать в соответствии с вашей постановкой перед запуском производственной сборки.
Облачные функции модульные тесты записываются в мокко с покрытием кода, сгенерированным Стамбулом. Эти тесты охватывают «функциональность бэкэнд», обрабатываемые облачными функциями, загрязняя среду функций (включая зависимости).
cd functions
npm i
npm test
yarn test:cov
Конечные тесты выполняются с использованием кипресса, и они живут в папке cypress
. Эти тесты охватывают функциональность пользовательского интерфейса и работают непосредственно в размещенной среде Fireadmin. Заявление о конечных тестах запускается автоматически при действиях GitHub после развертывания в стационарную среду перед тем, как развернуться в производство.
Создать учетную запись в консоли Firebase
Сохраните учетную запись Service как serviceAccount.json
в корне проекта
Получите UID пользователя, которого вы хотите использовать при тестировании с вкладки аутентификации консоли Firebase
Создайте cypress.env.json
со следующим форматом:
{
"TEST_UID" : " <- user account's UID -> "
}
Запустите yarn emulators
. Это загрузит эмуляторы (указано во время тестирования)
В другом терминале Yun yarn start:emulate
. Это загрузит приложение, указанное на эмуляторы
На другой вкладке терминала запустите yarn test:emulate:run
. Это запустит тесты интеграции Cypress, указывающие на эмуляторы (для посева и проверки)
Чтобы открыть пользовательский интерфейс Cypress Local Test Runner, где вы можете запустить отдельные тесты или все тесты, используйте yarn test:emulate
.
12
вместо более новой версии? Время выполнения облачных функций поддерживает до 12
, поэтому именно поэтому используется для версии CI Build. Это будет переключаться при обновлении времени выполнения функций