Skip to Content
开发🛠️ CI / CD
🚀

CI 核心价值:

  • 自动化构建/测试流程
  • 快速反馈代码质量问题
  • 确保主干代码始终可部署

持续集成与持续交付(CI/CD)是现代 DevOps 的核心实践,要求开发人员每天多次将代码合并到主干,通过自动化构建和测试快速发现问题,并将通过质量验证的代码持续交付到生产环境。

核心概念

工作流程

  1. 开发人员推送代码到版本库
  2. 自动触发构建服务器
  3. 执行编译、单元测试、集成测试
  4. 生成构建报告

代码静态分析(Static Code Analysis)

  • 定义:不运行程序,通过工具检查代码的结构、语法、潜在问题等,提前发现错误和不良实践。

单元测试自动化(Unit Test Automation)

  • 定义:对软件的最小可测试单元进行自动化测试,确保代码的正确性。

构建验证测试(Build Verification Test)

  • 定义:对构建的软件进行验证,确保可正常运行。

制品仓库管理(Artifact Repository)

  • 定义:存储构建产出的二进制文件、库、依赖等。

持续交付与部署

部署流水线

  1. 构建产物通过质量门禁后进入部署流水线,根据环境配置不同进行自动化部署。
  2. 部署流水线包含多个阶段,如测试、预发布、生产等。

持续部署(Continuous Deployment)

  • 定义:将通过测试的代码自动部署到生产环境。

部署策略

蓝绿部署

  • 定义:在生产环境中同时维护两个版本的服务,蓝色为当前版本,绿色为新版本,切换流量实现无缝升级。

代码质量门禁(Quality Gate)

使用 SonarQube 配置质量阈(Quality Gate):

sonar.qualitygate.wait=true sonar.qualitygate.timeout=600

配置 ESLint 代码规范检查(代码规范检查):

name: CI Pipeline on: workflow_run: workflows: ["CI Pipeline"] types: - completed jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup Node uses: actions/setup-node@v3 with: node-version: 20.x - run: npm ci - run: npm run build - run: npm test - name: Run Linter run: npx eslint . --ext .js,.jsx,.ts,.tsx continue-on-error: false

工具集成

GitHub Actions 核心概念

GitHub Actions 是 GitHub 提供的自动化 CI/CD 服务。

Kubernetes 编排示例

  • 配置 Deployment 实现滚动升级:
name: CD Pipeline on: push: branches: - main jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Kubernetes CLI uses: azure/setup-kubectl@v3.0.1 - name: Deploy to Kubernetes run: kubectl apply -f k8s/
Last updated on