name: CI on: push: branches: [main] pull_request: branches: [main] env: DATABASE_URL: postgresql://dragons:stash@localhost:5432/dragonsstash jobs: lint-and-build: runs-on: ubuntu-latest services: postgres: image: postgres:16-alpine env: POSTGRES_USER: dragons POSTGRES_PASSWORD: stash POSTGRES_DB: dragonsstash ports: - 5432:5432 options: >- --health-cmd "pg_isready -U dragons -d dragonsstash" --health-interval 10s --health-timeout 5s --health-retries 5 steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 20 cache: npm - name: Install dependencies run: npm ci - name: Generate Prisma client run: | npx prisma generate echo "--- Checking generated output ---" ls -la src/generated/prisma/ || echo "ERROR: src/generated/prisma/ does not exist!" echo "--- Checking node_modules/.prisma ---" ls -la node_modules/.prisma/client/ 2>/dev/null || echo "No .prisma/client in node_modules" - name: Run database migrations run: npx prisma migrate deploy - name: Type check run: npx tsc --noEmit - name: Build run: npm run build env: AUTH_SECRET: ci-test-secret-not-for-production AUTH_TRUST_HOST: "true" NEXT_PUBLIC_APP_URL: http://localhost:3000