🚀
CI 核心价值:
- 自动化构建/测试流程
- 快速反馈代码质量问题
- 确保主干代码始终可部署
持续集成与持续交付(CI/CD)是现代 DevOps 的核心实践,要求开发人员每天多次将代码合并到主干,通过自动化构建和测试快速发现问题,并将通过质量验证的代码持续交付到生产环境。
核心概念
工作流程
- 开发人员推送代码到版本库
- 自动触发构建服务器
- 执行编译、单元测试、集成测试
- 生成构建报告
代码静态分析(Static Code Analysis)
- 定义:不运行程序,通过工具检查代码的结构、语法、潜在问题等,提前发现错误和不良实践。
单元测试自动化(Unit Test Automation)
- 定义:对软件的最小可测试单元进行自动化测试,确保代码的正确性。
构建验证测试(Build Verification Test)
- 定义:对构建的软件进行验证,确保可正常运行。
制品仓库管理(Artifact Repository)
- 定义:存储构建产出的二进制文件、库、依赖等。
持续交付与部署
部署流水线
- 构建产物通过质量门禁后进入部署流水线,根据环境配置不同进行自动化部署。
- 部署流水线包含多个阶段,如测试、预发布、生产等。
持续部署(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