feat: add pre-flight config validation to warn about silently skipped… #444
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: 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" |