forked from codeforboston/home-energy-analysis-tool
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* import Pyodide in single.tsx Co-authored-by: Camden Blatchly <[email protected]> Co-authored-by: plocket <[email protected]> * Add default values to the form Co-authored-by: Camden Blatchly <[email protected]> Co-authored-by: plocket <[email protected]> Co-authored-by: Leopardfoot <[email protected]> * Put wheel on server by consolidating python + js builds Co-authored-by: plocket <[email protected]> * Put wheel on server by consolidating python + js builds (try2) Co-authored-by: plocket <[email protected]> * Put wheel on server by consolidating python + js builds (try3) Co-authored-by: plocket <[email protected]> * Put wheel on server by consolidating python + js builds (try3) Co-authored-by: plocket <[email protected]> * remove old rules-engine tests-build GHA * Put wheel on server by consolidating python + js builds Co-authored-by: plocket <[email protected]> --------- Co-authored-by: Camden Blatchly <[email protected]> Co-authored-by: plocket <[email protected]> Co-authored-by: Leopardfoot <[email protected]>
- Loading branch information
1 parent
73b6391
commit 7174bc7
Showing
8 changed files
with
357 additions
and
298 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,18 +1,21 @@ | ||
name: whole heat-stack | ||
on: | ||
name: Test, build, & deploy | ||
|
||
on: | ||
push: | ||
branches: | ||
- main | ||
- gha-deployment | ||
- dev | ||
pull_request: {} | ||
workflow_dispatch: | ||
|
||
env: | ||
working-directory: heat-stack | ||
rules-engine-working-directory: rules-engine | ||
heat-stack-working-directory: heat-stack | ||
|
||
defaults: | ||
run: | ||
working-directory: heat-stack | ||
working-directory: env.heat-stack-working-directory | ||
|
||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.ref }} | ||
|
@@ -23,170 +26,190 @@ permissions: | |
contents: read | ||
|
||
jobs: | ||
lint: | ||
name: ⬣ ESLint | ||
lint_rules_engine: | ||
name: Rules Engine - Lint | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
python-version: ["3.11.3"] | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- name: Set up environment | ||
uses: "./.github/actions/setup-rules-engine" | ||
with: | ||
python-version: ${{ matrix.python-version }} | ||
working-directory: ${{ env.rules-engine-working-directory }} | ||
- name: Check style | ||
run: | | ||
make lint | ||
working-directory: ${{ env.rules-engine-working-directory }} | ||
|
||
make-rules-engine-package: | ||
name: Rules Engine - Mypy | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
python-version: ["3.11.3"] | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- name: Set up environment | ||
uses: "./.github/actions/setup-rules-engine" | ||
with: | ||
python-version: ${{ matrix.python-version }} | ||
working-directory: ${{ env.rules-engine-working-directory }} | ||
- name: Check typing | ||
run: | | ||
make mypy | ||
working-directory: ${{ env.rules-engine-working-directory }} | ||
|
||
pytest-rules-engine: | ||
name: Rules Engine - Pytest | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
python-version: ["3.11.3"] | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- name: Set up environment | ||
uses: "./.github/actions/setup-rules-engine" | ||
with: | ||
python-version: ${{ matrix.python-version }} | ||
working-directory: ${{ env.rules-engine-working-directory }} | ||
- name: Run tests | ||
run: | | ||
make test | ||
working-directory: ${{ env.rules-engine-working-directory }} | ||
|
||
# Make the wheel | ||
build-rules-engine: | ||
name: Rules Engine - Build | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
python-version: ["3.11.3"] | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- name: Set up environment | ||
uses: "./.github/actions/setup-rules-engine" | ||
with: | ||
python-version: ${{ matrix.python-version }} | ||
working-directory: ${{ env.rules-engine-working-directory }} | ||
- name: Build wheel | ||
run: | | ||
make build | ||
working-directory: ${{ env.rules-engine-working-directory }} | ||
- name: list dist | ||
run: | | ||
ls -al dist | ||
working-directory: ${{ env.rules-engine-working-directory }} | ||
- name: store wheel as artifact | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: python-rules-engine-wheel | ||
path: ${{ env.rules-engine-working-directory }}/dist/ | ||
# Heat-Stack Jobs | ||
lint-js: | ||
name: ⬣ Heat-Stack - ESLint | ||
runs-on: ubuntu-22.04 | ||
steps: | ||
- name: β¬οΈ Checkout repo | ||
uses: actions/checkout@v3 | ||
|
||
- 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 }} | ||
|
||
working-directory: ${{ env.heat-stack-working-directory }} | ||
- name: πΌ Build icons | ||
working-directory: ${{ env.working-directory }} | ||
run: npm run build:icons | ||
|
||
working-directory: ${{ env.heat-stack-working-directory }} | ||
- name: π¬ Lint | ||
working-directory: ${{ env.working-directory }} | ||
run: npm run lint | ||
|
||
working-directory: ${{ env.heat-stack-working-directory }} | ||
|
||
typecheck: | ||
name: Κ¦ TypeScript | ||
typecheck-js: | ||
name: Κ¦ Heat-Stack - TypeScript | ||
runs-on: ubuntu-22.04 | ||
steps: | ||
- name: β¬οΈ Checkout repo | ||
uses: actions/checkout@v3 | ||
|
||
- 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 }} | ||
|
||
working-directory: ${{ env.heat-stack-working-directory }} | ||
- name: πΌ Build icons | ||
working-directory: ${{ env.heat-stack-working-directory }} | ||
run: npm run build:icons | ||
|
||
- name: π Type check | ||
working-directory: ${{ env.heat-stack-working-directory }} | ||
run: npm run typecheck --if-present | ||
|
||
vitest: | ||
name: β‘ Vitest pyodide.test.ts | ||
vitest-pyodide-js: | ||
name: β‘ Heat-Stack - Vitest pyodide.test.ts | ||
runs-on: ubuntu-22.04 | ||
steps: | ||
- name: β¬οΈ Checkout repo | ||
uses: actions/checkout@v3 | ||
|
||
- 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 }} | ||
|
||
working-directory: ${{ env.heat-stack-working-directory }} | ||
- name: π Copy test env vars | ||
working-directory: ${{ env.heat-stack-working-directory }} | ||
run: cp .env.example .env | ||
|
||
- name: πΌ Build icons | ||
working-directory: ${{ env.heat-stack-working-directory }} | ||
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 | ||
working-directory: ${{ env.heat-stack-working-directory }} | ||
run: npm run test app/utils/pyodide.test.ts -- | ||
# --coverage | ||
|
||
deploy-to-servers: | ||
name: π Heat-Stack - Deploy | ||
runs-on: ubuntu-22.04 | ||
needs: [lint, typecheck, vitest] #, playwright] | ||
needs: [lint-js, typecheck-js, vitest-pyodide-js] #, playwright-heat-stack] | ||
# 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 | ||
- uses: actions/checkout@v3 | ||
|
||
- name: π Read app name | ||
uses: SebRollen/[email protected] | ||
id: app_name | ||
with: | ||
file: '${{ env.working-directory }}/fly.toml' | ||
file: '${{ env.heat-stack-working-directory }}/fly.toml' | ||
field: 'app' | ||
|
||
# move Dockerfile to root | ||
- name: π Move Dockerfile | ||
working-directory: ${{ env.heat-stack-working-directory }} | ||
run: | | ||
mv ./other/Dockerfile ./Dockerfile | ||
mv ./other/.dockerignore ./.dockerignore | ||
- name: Pull Built Wheel Artifact | ||
uses: actions/download-artifact@v4 | ||
with: | ||
name: python-rules-engine-wheel | ||
path: ${{ env.heat-stack-working-directory }}/public/pyodide-env/ | ||
|
||
- name: π Setup Fly | ||
uses: superfly/flyctl-actions/[email protected] | ||
|
||
- name: π Deploy Staging | ||
if: ${{ github.ref == 'refs/heads/dev' }} | ||
working-directory: ${{ env.heat-stack-working-directory }} | ||
run: | ||
flyctl deploy --remote-only --build-arg COMMIT_SHA=${{ github.sha }} | ||
--app ${{ steps.app_name.outputs.value }}-staging | ||
|
@@ -195,7 +218,8 @@ jobs: | |
|
||
- name: π Deploy Production | ||
if: ${{ github.ref == 'refs/heads/main' || github.ref == 'refs/heads/gha-deployment' }} | ||
working-directory: ${{ env.heat-stack-working-directory }} | ||
run: | ||
flyctl deploy --remote-only --build-arg COMMIT_SHA=${{ github.sha }} | ||
env: | ||
FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }} | ||
FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }} |
Oops, something went wrong.