name: Pull Request Checks on: pull_request: branches: [main, dev] types: [opened, synchronize, reopened] jobs: pr-checks: name: PR Quality Checks runs-on: self-hosted permissions: contents: read pull-requests: read statuses: write steps: - name: Checkout code uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup Bun uses: oven-sh/setup-bun@v2 with: bun-version: latest - name: Install backend dependencies run: bun install --frozen-lockfile - name: Install frontend dependencies run: | cd web bun install --frozen-lockfile - name: Check backend build run: bun run build - name: TypeScript check frontend run: | cd web bunx tsc --noEmit - name: Check frontend build run: | cd web bun run build - name: Run backend linting run: bunx --bun eslint ./src ./web/src --ext .ts,.tsx - name: Check code formatting run: bunx --bun prettier --check "**/*.{js,json,md,ts,tsx}" --ignore-path .prettierignore - name: Validate PR title uses: amannn/action-semantic-pull-request@v5 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: types: | feat fix docs style refactor perf test chore requireScope: false size-check: name: Bundle Size Check runs-on: self-hosted permissions: contents: read pull-requests: read steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Bun uses: oven-sh/setup-bun@v2 with: bun-version: latest - name: Install frontend dependencies run: | cd web bun install --frozen-lockfile - name: Build frontend for size check run: | cd web bun run build - name: Check bundle size run: | cd web echo "Frontend build size:" du -sh dist/ echo "Individual asset sizes:" find dist/ -name "*.js" -o -name "*.css" | xargs ls -lh