Skip to content

feat: add pre-flight config validation to warn about silently skipped… #444

feat: add pre-flight config validation to warn about silently skipped…

feat: add pre-flight config validation to warn about silently skipped… #444

Workflow file for this run

name: Lint, Test & Build
on:
push:
branches: [main, master]
pull_request:
types: [opened, synchronize, reopened]
concurrency:
group: test-${{ github.head_ref || github.ref }}
cancel-in-progress: true
jobs:
release-guard:
name: Release Guard
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Cache Dependencies
uses: actions/cache@v4
with:
path: |
node_modules
~/.bun/install/cache
key: deps-${{ runner.os }}-bun-${{ hashFiles('bun.lock') }}
restore-keys: |
deps-${{ runner.os }}-bun-
- name: Install Dependencies
run: bun install --frozen-lockfile
- name: Run Release Verification
run: bun run test:release
lint:
name: Lint
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Cache Dependencies
uses: actions/cache@v4
with:
path: |
node_modules
~/.bun/install/cache
key: deps-${{ runner.os }}-bun-${{ hashFiles('bun.lock') }}
restore-keys: |
deps-${{ runner.os }}-bun-
- name: Install Dependencies
run: bun install --frozen-lockfile
- name: Build Core Packages
run: |
rm -rf packages/types/dist packages/template-generator/dist
bun run --filter=@better-fullstack/types build
bun run --filter=@better-fullstack/template-generator build
- name: Validate Builder Tech Links
run: bun run --cwd apps/web validate:tech-links
- name: Run Lint
run: bun run lint
test:
name: Test
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Setup Deno
uses: denoland/setup-deno@v2
with:
deno-version: v2.x
- name: Cache Dependencies
uses: actions/cache@v4
with:
path: |
node_modules
~/.bun/install/cache
key: deps-${{ runner.os }}-bun-${{ hashFiles('bun.lock') }}
restore-keys: |
deps-${{ runner.os }}-bun-
- name: Install Dependencies
run: bun install --frozen-lockfile
- name: Build Core Packages
run: |
bun run --filter=@better-fullstack/types build
bun run --filter=@better-fullstack/template-generator build
- name: Run Tests
run: bun run test
build:
name: Build Check
runs-on: ubuntu-latest
timeout-minutes: 15
needs: [release-guard, lint, test]
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Cache Dependencies
uses: actions/cache@v4
with:
path: |
node_modules
~/.bun/install/cache
key: deps-${{ runner.os }}-bun-${{ hashFiles('bun.lock') }}
restore-keys: |
deps-${{ runner.os }}-bun-
- name: Install Dependencies
run: bun install --frozen-lockfile
- name: Cache Turbo
uses: actions/cache@v4
with:
path: .turbo
key: turbo-${{ runner.os }}-${{ github.sha }}
restore-keys: |
turbo-${{ runner.os }}-
- name: Build Web (Vercel Parity)
run: bun run build:web
env:
NODE_OPTIONS: "--max-old-space-size=6144"
- name: Performance Budget Check
run: bun run --cwd apps/web perf:check
- name: Upload Performance Report
if: always()
uses: actions/upload-artifact@v4
with:
name: web-performance-report
path: apps/web/reports/performance
if-no-files-found: warn
- name: Publish Performance Summary
if: always()
run: |
if [ -f apps/web/reports/performance/summary.md ]; then
cat apps/web/reports/performance/summary.md >> "$GITHUB_STEP_SUMMARY"
else
echo "Performance summary was not generated." >> "$GITHUB_STEP_SUMMARY"
fi
- name: Build All Packages
run: bun run build
env:
NODE_OPTIONS: "--max-old-space-size=6144"