# Woodpecker CI Quality Enforcement Pipeline - Monorepo when: - event: [push, pull_request, manual] variables: - &node_image "node:20-alpine" - &install_deps | corepack enable pnpm install --frozen-lockfile - &use_deps | corepack enable steps: install: image: *node_image commands: - *install_deps security-audit: image: *node_image commands: - *use_deps - pnpm audit --audit-level=high depends_on: - install lint: image: *node_image environment: SKIP_ENV_VALIDATION: "true" commands: - *use_deps - pnpm lint || true # Non-blocking while fixing legacy code depends_on: - install when: - evaluate: 'CI_PIPELINE_EVENT != "pull_request" || CI_COMMIT_BRANCH != "main"' prisma-generate: image: *node_image environment: SKIP_ENV_VALIDATION: "true" commands: - *use_deps - pnpm --filter "@mosaic/api" prisma:generate depends_on: - install typecheck: image: *node_image environment: SKIP_ENV_VALIDATION: "true" commands: - *use_deps - pnpm typecheck depends_on: - prisma-generate test: image: *node_image environment: SKIP_ENV_VALIDATION: "true" commands: - *use_deps - pnpm test || true # Non-blocking while fixing legacy tests depends_on: - prisma-generate build: image: *node_image environment: SKIP_ENV_VALIDATION: "true" NODE_ENV: "production" commands: - *use_deps - pnpm build depends_on: - typecheck # Only block on critical checks - security-audit - prisma-generate