name: CI on: push: branches: [main, master] pull_request: branches: [main, master] jobs: lint: name: Lint runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Setup pnpm uses: pnpm/action-setup@v4 with: version: 9 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version-file: ".nvmrc" cache: "pnpm" - name: Install dependencies run: pnpm install --frozen-lockfile - name: Run ESLint run: pnpm lint typecheck: name: Type Check runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Setup pnpm uses: pnpm/action-setup@v4 with: version: 9 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version-file: ".nvmrc" cache: "pnpm" - name: Install dependencies run: pnpm install --frozen-lockfile - name: Run TypeScript type check run: pnpm typecheck build: name: Build runs-on: ubuntu-latest needs: [lint, typecheck] steps: - name: Checkout repository uses: actions/checkout@v4 - name: Setup pnpm uses: pnpm/action-setup@v4 with: version: 9 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version-file: ".nvmrc" cache: "pnpm" - name: Install dependencies run: pnpm install --frozen-lockfile - name: Build application run: pnpm build:ci env: # Provide minimal env vars for build (no actual secrets needed for build check) POSTGRES_URL: "postgresql://user:pass@localhost:5432/db" BETTER_AUTH_SECRET: "build-check-secret-32-characters!" NEXT_PUBLIC_APP_URL: "http://localhost:3000"