name: Prüfung on: push: branches: [main, "feat/**", "fix/**"] pull_request: branches: [main] jobs: pruefung: runs-on: ubuntu-latest services: postgres: image: postgres:17-alpine env: POSTGRES_USER: laufzettel POSTGRES_PASSWORD: laufzettel POSTGRES_DB: laufzettel_test options: >- --health-cmd "pg_isready -U laufzettel" --health-interval 5s --health-timeout 5s --health-retries 10 env: DATABASE_URL: postgresql://laufzettel:laufzettel@localhost:5432/laufzettel_test?schema=public TEST_DATABASE_URL: postgresql://laufzettel:laufzettel@localhost:5432/laufzettel_test?schema=public APP_SECRET: ci-geheimnis-mit-mindestens-32-zeichen-laenge APP_URL: http://localhost:3000 steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 24 - name: pnpm bereitstellen run: corepack enable pnpm env: COREPACK_ENABLE_DOWNLOAD_PROMPT: 0 - name: Abhängigkeiten installieren run: pnpm install --frozen-lockfile - name: Prisma-Client erzeugen run: pnpm exec prisma generate - name: Code-Stil prüfen run: pnpm lint - name: Typen prüfen run: pnpm typecheck - name: Tests run: pnpm test - name: Bauen run: pnpm build - name: Dokumentation prüfen run: pnpm pruefe:doku - name: Shell-Skripte prüfen run: | if compgen -G "deploy/*.sh" > /dev/null || compgen -G "deploy/proxmox/*.sh" > /dev/null; then shellcheck --severity=warning deploy/*.sh deploy/proxmox/*.sh else echo "Noch keine Shell-Skripte vorhanden (kommen mit #019)." fi e2e: runs-on: ubuntu-latest needs: pruefung services: postgres: image: postgres:17-alpine env: POSTGRES_USER: laufzettel POSTGRES_PASSWORD: laufzettel POSTGRES_DB: laufzettel_test options: >- --health-cmd "pg_isready -U laufzettel" --health-interval 5s --health-timeout 5s --health-retries 10 env: DATABASE_URL: postgresql://laufzettel:laufzettel@localhost:5432/laufzettel_test?schema=public APP_SECRET: ci-geheimnis-mit-mindestens-32-zeichen-laenge APP_URL: http://127.0.0.1:3000 AUTH_LOCAL_ENABLED: "true" SEED_ADMIN_EMAIL: admin@firma.example SEED_ADMIN_PASSWORD: ci-passwort-nur-fuer-tests steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 24 - name: pnpm bereitstellen run: corepack enable pnpm env: COREPACK_ENABLE_DOWNLOAD_PROMPT: 0 - name: Abhängigkeiten installieren run: pnpm install --frozen-lockfile - name: Browser holen run: pnpm exec playwright install --with-deps chromium - name: Schema und Seed run: pnpm exec prisma migrate deploy && pnpm db:seed - name: Bauen run: pnpm build - name: Ende-zu-Ende-Tests run: pnpm exec playwright test - uses: actions/upload-artifact@v4 if: failure() with: name: playwright-bericht path: playwright-report/ retention-days: 7