Skip to content

快速搭建多环境 CI/CD 自动化部署

CI/CD 概述

CI/CD(持续集成/持续部署)是现代软件开发的核心实践,通过自动化构建、测试和部署流程,提升研发效率和代码质量。

多环境部署策略

环境划分

  • 开发环境 (Dev):开发者本地或共享开发服务器
  • 测试环境 (Test/STG):QA 测试、集成测试
  • 预发布环境 (Pre/Staging):生产数据镜像,最终验证
  • 生产环境 (Prod):线上真实环境

部署流程

代码提交 → 自动化构建 → 自动化测试 → 镜像打包 → 部署到 Dev → 部署到 STG → 部署到 Pre → 部署到 Prod

常用 CI/CD 工具

  • GitHub Actions:与 GitHub 深度集成,配置简单
  • GitLab CI/CD:GitLab 内置,功能强大
  • Jenkins:老牌 CI 工具,插件生态丰富
  • CircleCI:云端 CI/CD,快速易用
  • Travis CI:开源项目友好

GitHub Actions 实战

基础工作流配置

yaml
name: CI/CD Pipeline

on:
  push:
    branches: [main, develop]
  pull_request:
    branches: [main]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'
      - name: Install dependencies
        run: npm ci
      - name: Run tests
        run: npm test
      - name: Build
        run: npm run build

多环境部署配置

yaml
deploy-staging:
  needs: build
  if: github.ref == 'refs/heads/develop'
  runs-on: ubuntu-latest
  steps:
    - name: Deploy to Staging
      run: |
        # 部署到测试环境
        echo "Deploying to staging..."

deploy-production:
  needs: build
  if: github.ref == 'refs/heads/main'
  runs-on: ubuntu-latest
  steps:
    - name: Deploy to Production
      run: |
        # 部署到生产环境
        echo "Deploying to production..."

Docker 化部署

Dockerfile 示例

dockerfile
# 构建阶段
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

# 运行阶段
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80

最佳实践

  1. 自动化测试先行:在 CI 流程中集成单元测试、集成测试、E2E 测试
  2. 代码质量检查:集成 ESLint、Prettier、SonarQube 等工具
  3. 构建产物版本化:使用 Git Commit Hash 或 SemVer 标记版本
  4. 回滚策略:保留历史版本,支持快速回滚
  5. 环境配置分离:使用环境变量管理不同环境的配置
  6. 监控告警:部署后自动进行健康检查和告警通知