# CI/CD 设计与部署方案

## 目标
提供从代码质量到产物构建的自动化流程：lint → typecheck → build。

## GitHub Actions（推荐）
- 工作流文件参见补丁 `0003-github-actions-ci.patch`，关键步骤：
  - 使用 `actions/setup-node@v4` + `corepack enable`；
  - 安装依赖：`pnpm i --frozen-lockfile`；
  - 执行 `pnpm lint && pnpm typecheck && pnpm build`。

## 部署对比
- Vercel（推荐）
  - 优点：零配置、内置 CDN、适配 Nuxt/Nitro；Preview 环境完善。
  - 缺点：免费额度受限；对长时间 SSR 任务需商用套餐。
- Docker（自管）
  - 优点：环境一致性高；更灵活接入内网服务。
  - 缺点：需自建 CI/CD 与监控；维护成本更高。
- 自建 Node + Nginx
  - 优点：成本可控；传统可见性强。
  - 缺点：手工配置多；需要额外缓存/CDN 配合。

## Dockerfile（示例）
```dockerfile
FROM node:20-alpine AS build
WORKDIR /app
COPY . .
RUN corepack enable && pnpm i --frozen-lockfile && pnpm build

FROM node:20-alpine
WORKDIR /app
ENV NODE_ENV=production
COPY --from=build /app/.output ./.output
EXPOSE 3000
CMD ["node","./.output/server/index.mjs"]
```

## 环境变量与密钥
- 在 CI 中设置 `NITRO_PRESET`、`SENTRY_DSN` 等；Nuxt 通过 `runtimeConfig` 注入，避免硬编码。

