# Dependencies node_modules/ backend/local-maven/ backend/build-temp/ backend/.m2/ __pycache__/ *.py[cod] *.lock package-lock.json yarn.lock pnpm-lock.yaml # 例外:依赖锁文件必须入库,CI 的可复现安装依赖它们。 # # 2026-09-22 修复背景:上面四条规则此前把 admin-web/pnpm-lock.yaml 与 # miniapp/package-lock.json 一并挡在版本控制之外,于是 CI checkout 后的环境 # 与本机完全不同: # - admin-web:`pnpm install --frozen-lockfile` 找不到 lockfile → 直接失败 # (frozen 模式的语义就是「必须存在且不可变更」,缺文件不是警告而是错误); # - miniapp:`npm install` 无 lockfile 约束,版本随上游浮动, # `npx tsc --noEmit` 的结果不与任何一次本地验证对齐。 # 二者共同导致「本地绿、CI 红」且二者都不可解释。 # # 只放行每个包真正使用的那把锁:admin-web 走 pnpm,miniapp 走 npm。 # admin-web/package-lock.json 仍然忽略 —— 同一目录并存两把锁会让两种包管理器 # 各自按自己的锁安装,漂移时彼此看不出问题,属于典型的双锁冲突。 !admin-web/pnpm-lock.yaml !miniapp/package-lock.json # Build outputs backend/target/ admin-web/dist/ miniapp/dist/ miniapp/unpackage/ # vite 在 dev server 被强杀(未优雅退出)时会遗留配置临时文件 admin-web/vite.config.ts.timestamp-*.mjs # IDE .idea/ .vscode/ *.iml *.iws *.ipr .DS_Store # Environment variables with secrets backend/src/main/resources/application-dev.yml *.env !.env.example # Logs *.log logs/ # Test data .pytest_cache/ tests/fixtures/*.csv tests/fixtures/*.json # Local workspace and developer settings .worktrees/ .zcode/ .workbuddy/ .mimosa/ .trae/ .wb_tmp_bcrypt/ project.private.config.json /nul /infrastructure/nul # OS files Thumbs.db .DS_Store # Secrets and certificates # # 2026-09-22 修正:`docker-compose.prod.yml` 原先被列在本段(当作密钥)而排除出 # 版本控制,这是**误分类** —— 该文件不含任何明文密钥:所有敏感值都通过 # `${VAR:?请设置...}` 注入,db 密码走 Docker secrets(./secrets/db_password.txt), # 文件头注释本身也写着「敏感信息通过 .env 文件注入,不进 Git」。 # # 后果:backend 的 `DeploymentTests.testDockerComposeProdExists` 断言该文件存在, # 于是「本地恒绿(文件在工作区)、CI 恒红(checkout 拿不到)」—— # 一次典型的本地绿/CI 红假绿,且从本地永远发现不了。 # 生产部署配置需要可复现、可评审,应与 staging 版一致纳入版本控制。 # 真正的密钥仍由下面三条挡住。 infrastructure/secrets/ infrastructure/certs/ infrastructure/backups/ # Local artifacts and backups artifacts/backups/ *.dump *.bundle