自动化部署的标准链路是:push 代码 → CI 跑 lint/test/build 产出静态产物 → 上传到 CDN/对象存储 → 刷新或灰度发布。前端产物多是纯静态文件,因此它天然适合自动化:一条流水线写好,之后每次合 main 自动出新版本,无需任何人手动 FTP 或者本地 build 再传服务器。
工具链分三层:CI/CD 平台(GitHub Actions / GitLab CI / Jenkins)负责执行,构建用 npm/scripts,产物落地到 CDN(OSS/S3/Vercel/Netlify)。进阶能力包括:环境变量按环境注入、产物带内容哈希实现长效缓存、灰度发布与一键回滚。核心收益不是快,而是「发布这个动作可复现、可审计、可回滚」。
// .github/workflows/deploy.yml —— GitHub Actions 自动部署 name: Deploy on: push: branches: [main] # 合并 main 即部署 jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: { node-version: 20, cache: 'pnpm' } - run: pnpm install --frozen-lockfile - run: pnpm test # 测试不过,流水线在此终止 - run: pnpm build # 产物在 dist/(文件名带内容哈希) - name: 发布到静态托管 run: aws s3 sync dist/ s3://my-app/${{ github.sha }}/ - name: 切换线上版本(灰度/回滚只改一个指针) run: aws s3api copy-object --copy-source my-app/${{ github.sha }}/index.html --key prod/index.html --bucket my-app