Merge pull request #386 from BigBen-7/feat/middleware-suite #215
This file contains hidden or 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
| name: CI | |
| on: | |
| push: | |
| branches: | |
| - main | |
| - develop | |
| pull_request: | |
| branches: | |
| - main | |
| - develop | |
| jobs: | |
| lint-imports: | |
| name: lint-imports | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Lint absolute imports | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| pattern="^[[:space:]]*(import|export)[^;]*from[[:space:]]+['\"]src/|^[[:space:]]*import[[:space:]]+['\"]src/" | |
| if command -v rg >/dev/null 2>&1; then | |
| matches=$(rg -n \ | |
| --glob '!**/node_modules/**' \ | |
| --glob '!**/dist/**' \ | |
| --glob '!**/build/**' \ | |
| --glob '!**/.next/**' \ | |
| --glob '!**/coverage/**' \ | |
| --glob '!**/out/**' \ | |
| --glob '!**/tmp/**' \ | |
| --glob '!**/.turbo/**' \ | |
| --glob '!**/.cache/**' \ | |
| --glob '*.ts' \ | |
| --glob '*.tsx' \ | |
| "$pattern" . || true) | |
| else | |
| matches=$(grep -RIn \ | |
| --include='*.ts' \ | |
| --include='*.tsx' \ | |
| --exclude-dir=node_modules \ | |
| --exclude-dir=dist \ | |
| --exclude-dir=build \ | |
| --exclude-dir=.next \ | |
| --exclude-dir=coverage \ | |
| --exclude-dir=out \ | |
| --exclude-dir=tmp \ | |
| --exclude-dir=.turbo \ | |
| --exclude-dir=.cache \ | |
| -E "$pattern" . || true) | |
| fi | |
| if [ -n "$matches" ]; then | |
| echo "ERROR: Absolute imports from \"src/\" are not allowed. Use relative paths instead." | |
| echo "$matches" | |
| exit 1 | |
| fi | |
| build: | |
| name: build | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20.x | |
| cache: npm | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Build frontend | |
| run: npm --workspace frontend run build | |
| - name: Build backend | |
| run: npm --workspace backend run build | |
| type-check: | |
| name: type-check | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 18 | |
| cache: npm | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Type-check frontend | |
| run: npm --workspace frontend exec -- tsc --noEmit -p tsconfig.json | |
| - name: Type-check backend | |
| run: npm --workspace backend exec -- tsc --noEmit -p tsconfig.json | |
| contracts: | |
| name: contracts | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| working-directory: contract | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| toolchain: stable | |
| targets: wasm32-unknown-unknown | |
| - name: Cache dependencies | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| workspaces: "contract" | |
| - name: Check formatting | |
| run: cargo fmt --all -- --check | |
| - name: Run clippy | |
| run: cargo clippy --all-targets --all-features -- -D warnings | |
| - name: Build Contracts | |
| run: cargo build --target wasm32-unknown-unknown --release | |
| - name: Run tests | |
| run: cargo test |