Skip to content

Calculate boiler usage #147

Calculate boiler usage

Calculate boiler usage #147

Workflow file for this run

name: whole heat-stack
on:
push:
branches:
- main
- gha-deployment
- dev
pull_request: {}
env:
working-directory: heat-stack
defaults:
run:
working-directory: heat-stack
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
actions: write
contents: read
jobs:
lint:
name: ⬣ ESLint
runs-on: ubuntu-22.04
steps:
- name: ⬇️ Checkout repo
uses: actions/checkout@v3
- name: ⎔ Setup node
uses: actions/setup-node@v3
with:
node-version: 20
- name: 📥 Download deps
uses: bahmutov/npm-install@v1
with:
working-directory: ${{ env.working-directory }}
- name: 🖼 Build icons
working-directory: ${{ env.working-directory }}
run: npm run build:icons
- name: 🔬 Lint
working-directory: ${{ env.working-directory }}
run: npm run lint
typecheck:
name: ʦ TypeScript
runs-on: ubuntu-22.04
steps:
- name: ⬇️ Checkout repo
uses: actions/checkout@v3
- name: ⎔ Setup node
uses: actions/setup-node@v3
with:
node-version: 20
- name: 📥 Download deps
uses: bahmutov/npm-install@v1
with:
working-directory: ${{ env.working-directory }}
- name: 🖼 Build icons
run: npm run build:icons
- name: 🔎 Type check
run: npm run typecheck --if-present
vitest:
name: ⚡ Vitest pyodide.test.ts
runs-on: ubuntu-22.04
steps:
- name: ⬇️ Checkout repo
uses: actions/checkout@v3
- name: ⎔ Setup node
uses: actions/setup-node@v3
with:
node-version: 20
- name: 📥 Download deps
uses: bahmutov/npm-install@v1
with:
working-directory: ${{ env.working-directory }}
- name: 🏄 Copy test env vars
run: cp .env.example .env
- name: 🖼 Build icons
run: npm run build:icons
- name: ⚡ Run vitest
run: npm run test app/utils/pyodide.test.ts -- # --coverage
# playwright tests work great but slight jank/inconsistency passing, and not used yet, so disabling for now
# playwright:
# name: 🎭 Playwright
# runs-on: ubuntu-22.04
# timeout-minutes: 60
# steps:
# - name: ⬇️ Checkout repo
# uses: actions/checkout@v3
# - name: 🏄 Copy test env vars
# run: cp .env.example .env
# - name: ⎔ Setup node
# uses: actions/setup-node@v3
# with:
# node-version: 18
# - name: 📥 Download deps
# uses: bahmutov/npm-install@v1
# with:
# working-directory: ${{ env.working-directory }}
# - name: 📥 Install Playwright Browsers
# run: npm run test:e2e:install
# - name: 🛠 Setup Database
# run: npx prisma migrate deploy
# - name: 🏦 Cache Database
# id: db-cache
# uses: actions/cache@v3
# with:
# path: prisma/data.db
# key:
# db-cache-schema_${{ hashFiles('./prisma/schema.prisma')
# }}-migrations_${{ hashFiles('./prisma/migrations/*/migration.sql')
# }}
# - name: 🌱 Seed Database
# if: steps.db-cache.outputs.cache-hit != 'true'
# run: npx prisma db seed
# env:
# MINIMAL_SEED: true
# - name: 🏗 Build
# run: npm run build
# - name: 🎭 Playwright tests
# run: npx playwright test
# - name: 📊 Upload report
# uses: actions/upload-artifact@v3
# if: always()
# with:
# name: playwright-report
# path: playwright-report/
# retention-days: 30
deploy:
name: 🚀 Deploy
runs-on: ubuntu-22.04
needs: [lint, typecheck, vitest] #, playwright]
# only build/deploy main branch on pushes
if:
${{ (github.ref == 'refs/heads/gha-deployment' || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/dev') &&
github.event_name == 'push' }}
steps:
- name: ⬇️ Checkout repo
uses: actions/checkout@v3
- name: 👀 Read app name
uses: SebRollen/[email protected]
id: app_name
with:
file: '${{ env.working-directory }}/fly.toml'
field: 'app'
# move Dockerfile to root
- name: 🚚 Move Dockerfile
run: |
mv ./other/Dockerfile ./Dockerfile
mv ./other/.dockerignore ./.dockerignore
- name: 🎈 Setup Fly
uses: superfly/flyctl-actions/[email protected]
- name: 🚀 Deploy Staging
if: ${{ github.ref == 'refs/heads/dev' }}
run:
flyctl deploy --remote-only --build-arg COMMIT_SHA=${{ github.sha }}
--app ${{ steps.app_name.outputs.value }}-staging
env:
FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }}
- name: 🚀 Deploy Production
if: ${{ github.ref == 'refs/heads/main' || github.ref == 'refs/heads/gha-deployment' }}
run:
flyctl deploy --remote-only --build-arg COMMIT_SHA=${{ github.sha }}
env:
FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }}