概念 | 解释 |
---|---|
CI(持续集成) | 自动构建 + 自动测试 + 合并提交 |
CD(持续部署) | 自动部署到测试/生产服务器 |
目标是:让代码一提交,自动构建 → 测试 → 上线 → 通知,提高发布效率和质量。
1. 提交代码到 Git 仓库(如 GitHub)
↓
2. 触发 CI 流程(如 GitHub Actions)
↓
3. 安装依赖、构建产物(npm run build)
↓
4. 自动化测试(unit test / e2e)
↓
5. 构建通过后自动部署到:
- 云服务(如 Vercel, Netlify)
- 静态服务器(如 Nginx)
- 云平台(如阿里云、腾讯云、Docker+K8s)
.github/workflows/deploy.yml
name: CI/CD Frontend Deploy
on:
push:
branches:
- main
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: 18
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm test
- name: Build project
run: npm run build
- name: Deploy to Server (using SCP)
uses: appleboy/scp-action@master
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
password: ${{ secrets.SERVER_PWD }}
source: "dist/"
target: "/var/www/your-project"
方案 | 优势 | 适合场景 |
---|---|---|
Vercel | 免费、自动绑定 GitHub、支持 SSR | React/Next.js、文档项目 |
Netlify | 免费、支持函数/构建 Hook | 静态博客、VuePress 项目 |
自建服务器 | 灵活、可控性强 | 企业/大型系统 |
Docker+Nginx | 标准化部署,环境一致性强 | 多人协作、集群部署 |
Docker 让构建 + 运行环境一致,可打包为镜像,部署到任何云平台。
# 构建阶段
FROM node:18 AS builder
WORKDIR /app
COPY . .
RUN npm ci && npm run build
# 部署阶段
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
COPY ./nginx.conf /etc/nginx/conf.d/default.conf
docker build -t my-frontend-app .
docker run -p 80:80 my-frontend-app
在项目中通常会有 .env.development
, .env.production
等环境配置:
# .env.production
VITE_API_URL=https://api.prod.com
配合 Vite/Webpack 自动注入:
const api = import.meta.env.VITE_API_URL
在 CI 流程中动态切换:
run: npm run build -- --mode=production
可通过 GitHub Actions + 企业微信 / 飞书 / Slack 机器人通知:
- name: Notify WeChat
uses: tim-actions/notify-wecom@v1
with:
webhook: ${{ secrets.WECOM_HOOK }}
content: '✅ 项目构建部署成功:${{ github.repository }}'
答:
使用 GitHub Actions 实现 CI/CD,包括自动安装依赖、单元测试、构建产物,构建成功后通过 SCP/Docker 推送到服务器,或集成到 Vercel/Netlify 上线。
答:
使用多套
.env
文件,构建命令中带--mode
控制;部署脚本中根据分支或 tag 区分部署目标服务器。
掌握前端 CI/CD 流程,不只是构建自动化,更是工程化能力的体现。会配置 GitHub Actions、Docker、Vercel、测试部署流程,在面试中能体现出你有实际项目管理和团队协作意识,这是迈向高级前端的重要一步。