Skip to content

Commit

Permalink
feat: setup firebase hosting (#42)
Browse files Browse the repository at this point in the history
* feat: setup firebase hosting

* feat: setup firebase hosting

* fix: build has dependency on install

* fix: specify target in firebase.json

* fix: comment out target

* fix: create targets

* fix: create targets

* fix: create targets

* chore: add back projects

* fix: configure firebase project

* fix: skip install if we got cache

* fix: load firebase from cache

* fix: dont install firebase if we have cache

* fix: use cache v2

* fix: comment out firebase use mainnet

* fix: single target firebase.json

* fix: deploy preview

* fix: add NPM_TOKEN to preview
  • Loading branch information
sol-mocha authored Aug 23, 2022
1 parent d701c3f commit 48a478c
Show file tree
Hide file tree
Showing 5 changed files with 300 additions and 0 deletions.
24 changes: 24 additions & 0 deletions .firebaserc
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"projects": {
"default": "internal-drip-devnet",
"devnet": "internal-drip-devnet",
"mainnet": "internal-drip-mainnet"
},
"targets": {
"internal-drip-mainnet": {
"hosting": {
"main": [
"internal-drip-mainnet"
]
}
},
"internal-drip-devnet": {
"hosting": {
"main": [
"internal-drip-devnet"
]
}
}
},
"etags": {}
}
107 changes: 107 additions & 0 deletions .github/workflows/firebase-hosting-merge.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
# This file was auto-generated by the Firebase CLI
# https://github.com/firebase/firebase-tools

name: Deploy to Firebase Hosting on merge

env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}

on:
push:
branches:
- main

jobs:
install_node_modules:
name: install and cache node node_modules
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2

- name: ⚡️ cache
id: cache-modules
uses: actions/cache@v2
with:
path: |
node_modules
/opt/hostedtoolcache/node
key: ${{ matrix.node-version }}-${{ runner.OS }}-build-${{ hashFiles('package.json') }}

- name: setup node
uses: actions/setup-node@v3
with:
node-version: 16

- name: install node_modules
if: steps.cache-modules.outputs.cache-hit != 'true'
run: yarn

- name: install firebase tools
if: steps.cache-modules.outputs.cache-hit != 'true'
run: npm install -g firebase-tools

build_and_deploy_devnet:
needs: [install_node_modules]
name: build and deploy internal devnet app
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2

- name: ⚡️ cache
id: cache-modules
uses: actions/cache@v2
with:
path: |
node_modules
/opt/hostedtoolcache/node
key: ${{ matrix.node-version }}-${{ runner.OS }}-build-${{ hashFiles('package.json') }}

- name: setup node
uses: actions/setup-node@v3
with:
node-version: 16

- name: build
run: REACT_APP_NETWORK=DEVNET yarn build

- name: deploy
uses: FirebaseExtended/action-hosting-deploy@v0
with:
repoToken: '${{ secrets.GITHUB_TOKEN }}'
firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_INTERNAL_DRIP_DEVNET }}'
channelId: live
target: main
projectId: internal-drip-devnet

build_and_deploy_mainnet:
needs: [install_node_modules]
name: build and deploy internal mainnet app
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2

- name: ⚡️ cache
id: cache-modules
uses: actions/cache@v2
with:
path: |
node_modules
/opt/hostedtoolcache/node
key: ${{ matrix.node-version }}-${{ runner.OS }}-build-${{ hashFiles('package.json') }}

- name: setup node
uses: actions/setup-node@v3
with:
node-version: 16

- name: build
run: REACT_APP_NETWORK=MAINNETBETA yarn build

- name: deploy
uses: FirebaseExtended/action-hosting-deploy@v0
with:
repoToken: '${{ secrets.GITHUB_TOKEN }}'
firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_INTERNAL_DRIP_MAINNET }}'
channelId: live
target: main
projectId: internal-drip-mainnet
69 changes: 69 additions & 0 deletions .github/workflows/firebase-hosting-pull-request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# This file was auto-generated by the Firebase CLI
# https://github.com/firebase/firebase-tools

name: Deploy Preview

env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}

on:
pull_request:
branches:
- '*'

jobs:
install_node_modules:
name: install and cache node node_modules
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2

- name: ⚡️ cache
id: cache-modules
uses: actions/cache@v2
with:
path: |
node_modules
/opt/hostedtoolcache/node
key: ${{ matrix.node-version }}-${{ runner.OS }}-build-${{ hashFiles('package.json') }}

- name: setup node
uses: actions/setup-node@v3
with:
node-version: 16

- name: install node_modules
if: steps.cache-modules.outputs.cache-hit != 'true'
run: yarn

build_and_deploy_preview:
needs: [install_node_modules]
if: '${{ github.event.pull_request.head.repo.full_name == github.repository }}'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2

- name: ⚡️ cache
id: cache-modules
uses: actions/cache@v2
with:
path: |
node_modules
/opt/hostedtoolcache/node
key: ${{ matrix.node-version }}-${{ runner.OS }}-build-${{ hashFiles('package.json') }}

- name: setup node
uses: actions/setup-node@v3
with:
node-version: 16

- name: build
run: REACT_APP_NETWORK=DEVNET yarn build

- name: deploy
uses: FirebaseExtended/action-hosting-deploy@v0
with:
repoToken: '${{ secrets.GITHUB_TOKEN }}'
firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_INTERNAL_DRIP_DEVNET }}'
target: main
projectId: internal-drip-devnet
7 changes: 7 additions & 0 deletions firebase.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"hosting": {
"target": "main",
"public": "build",
"ignore": ["firebase.json", "**/.*", "**/node_modules/**"]
}
}
93 changes: 93 additions & 0 deletions public/404.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Page Not Found</title>

<style media="screen">
body {
background: #eceff1;
color: rgba(0, 0, 0, 0.87);
font-family: Roboto, Helvetica, Arial, sans-serif;
margin: 0;
padding: 0;
}
#message {
background: white;
max-width: 360px;
margin: 100px auto 16px;
padding: 32px 24px 16px;
border-radius: 3px;
}
#message h3 {
color: #888;
font-weight: normal;
font-size: 16px;
margin: 16px 0 12px;
}
#message h2 {
color: #ffa100;
font-weight: bold;
font-size: 16px;
margin: 0 0 8px;
}
#message h1 {
font-size: 22px;
font-weight: 300;
color: rgba(0, 0, 0, 0.6);
margin: 0 0 16px;
}
#message p {
line-height: 140%;
margin: 16px 0 24px;
font-size: 14px;
}
#message a {
display: block;
text-align: center;
background: #039be5;
text-transform: uppercase;
text-decoration: none;
color: white;
padding: 16px;
border-radius: 4px;
}
#message,
#message a {
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);
}
#load {
color: rgba(0, 0, 0, 0.4);
text-align: center;
font-size: 13px;
}
@media (max-width: 600px) {
body,
#message {
margin-top: 0;
background: white;
box-shadow: none;
}
body {
border-top: 16px solid #ffa100;
}
}
</style>
</head>
<body>
<div id="message">
<h2>404</h2>
<h1>Page Not Found</h1>
<p>
The specified file was not found on this website. Please check the URL for mistakes and try
again.
</p>
<h3>Why am I seeing this?</h3>
<p>
This page was generated by the Firebase Command-Line Interface. To modify it, edit the
<code>404.html</code> file in your project's configured <code>public</code> directory.
</p>
</div>
</body>
</html>

0 comments on commit 48a478c

Please sign in to comment.