管理壁爐應用程序的申請。包括對多種環境和數據遷移的支持
即將推出
有興趣添加功能還是貢獻?請打開一個問題!
由於這是源代碼,因此一個很好的起點是在Fireadmin.io上檢查託管版的Fireadmin。
在開發過程中,您可能主要依靠npm start
;但是,您可以使用其他腳本:
yarn <script> | 描述 |
---|---|
start | 在localhost:3000 |
start:dist | 構建到./dist localhost:3000 firebase serve |
functions:start | 在本地運行功能depp(使用firebase functions:shell |
functions:build | 將雲功能構建為./functions/dist |
functions:test | 運行摩卡咖啡的功能單元測試 |
build | 將應用程序構建為./dist |
test | 使用柏樹運行E2E測試。參見測試 |
lint | 絨毛可能會出現潛在錯誤 |
lint:fix | 棉絨項目並修復所有可更正錯誤 |
沙啞用於啟用prepush
能力。當前, prepush
腳本運行eslint
,如果您的代碼中有任何棉布,這將使您無法推動。如果您想禁用此功能,請從package.json
中刪除prepush
腳本。
├── .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個節點10是為了匹配最新的雲功能運行時)npm i -g firebase-tools
安裝依賴項: yarn install
在您的項目的Firebase控制台內創建Web應用程序(配置將在下一步中使用)
創建一個.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
來通過從.firebaserc
獲得設置來簡化CI部署過程。所需要的只是為firebase提供身份驗證:
至少有兩個壁爐項目準備使用,一個用於每個環境(分期和生產)
在兩個projects
, ci
和targets
部分中替換.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
通過將代碼推向git遙控器(很可能是github),在github操作上運行構建
有關CI設置上的更多選項,請查看Firebase-CI文檔。
yarn build
firebase deploy
注:您可以使用firebase serve
來測試您的應用程序在部署到firebase時的工作方式,但請確保先運行yarn build
。文檔可在fireadmin.io/docs獲得
所有文檔的源代碼和內容都位於docs
文件夾中。文檔是根據gatsby-config.js
中的設置使用gatsby生成靜態文件的。
請訪問DOCS README以獲取更多信息。
注意:如果您進行了設置CI部署,則在運行生產構建之前,E2E測試和單元測試可以自動違反分期環境。
雲功能單元測試用摩卡咖啡編寫,並由伊斯坦布爾生成的代碼覆蓋範圍編寫。這些測試涵蓋了通過將功能環境(包括依賴性)固定來處理的“後端功能”。
cd functions
npm i
npm test
yarn test:cov
端到端測試是使用柏樹完成的,它們生活在cypress
文件夾中。這些測試涵蓋了UI功能,並直接在Fireadmin的託管環境上運行。應用程序到最終測試將在GitHub操作中自動運行,然後部署到分期登台環境之前,然後部署到生產之前。
在Firebase控制台內創建服務帳戶
將服務帳戶作為serviceAccount.json
保存在項目的根源中
從Firebase Console的“身份驗證”選項卡進行測試時,請獲取要使用的用戶的UID
創建具有以下格式的cypress.env.json
:
{
"TEST_UID" : " <- user account's UID -> "
}
運行yarn emulators
。這將啟動模擬器(在測試期間指向)
在不同的終端Yun yarn start:emulate
。這將啟動指向模擬器的應用程序
在不同的終端選項卡中,運行yarn test:emulate:run
。這將運行指向仿真器的柏樹集成測試(用於播種和驗證)
要打開Cypress的本地測試跑者UI,您可以在其中運行單個測試或所有測試使用yarn test:emulate
。
12
而不是較新版本?雲功能運行時最多支持12
,這就是為什麼這是CI構建版本使用的原因。當功能運行時更新時,此功能將被切換