-
-
Notifications
You must be signed in to change notification settings - Fork 32
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
69 changed files
with
4,489 additions
and
882 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
{ | ||
"image": "mcr.microsoft.com/devcontainers/universal:2" | ||
} |
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 |
---|---|---|
@@ -0,0 +1,3 @@ | ||
{ | ||
"image": "mcr.microsoft.com/devcontainers/python:3.11" | ||
} |
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.