Skip to content

Commit

Permalink
Merge conflicts
Browse files Browse the repository at this point in the history
  • Loading branch information
dwindleduck committed Jul 3, 2024
2 parents 9857762 + 9033c6f commit b93495d
Show file tree
Hide file tree
Showing 69 changed files with 4,489 additions and 882 deletions.
3 changes: 3 additions & 0 deletions .devcontainer/heat-stack/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"image": "mcr.microsoft.com/devcontainers/universal:2"
}
3 changes: 3 additions & 0 deletions .devcontainer/rules-engine/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"image": "mcr.microsoft.com/devcontainers/python:3.11"
}
5 changes: 4 additions & 1 deletion .github/actions/setup-rules-engine/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ inputs:
python-version:
description: Python version to use (e.g. "3.10")
required: true
working-directory:
description: The working directory for the rules engine
required: true
runs:
using: "composite"
steps:
Expand All @@ -12,7 +15,7 @@ runs:
with:
python-version: ${{ inputs.python-version }}
- name: Install dependencies
working-directory: ${{ env.working-directory }}
working-directory: ${{ inputs.working-directory }}
shell: bash
run: |
python -m pip install --upgrade pip
Expand Down
228 changes: 126 additions & 102 deletions .github/workflows/heat-stack.yml
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 }}
Expand All @@ -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
Expand All @@ -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 }}
Loading

0 comments on commit b93495d

Please sign in to comment.