题目
解释CI/CD的基本概念和工作流程
信息
- 类型:问答
- 难度:⭐
考点
CI/CD定义,核心流程,基础工具
快速回答
CI/CD是持续集成(Continuous Integration)和持续交付/部署(Continuous Delivery/Deployment)的实践:
- CI:开发人员频繁合并代码到共享仓库,触发自动化构建和测试
- CD:通过自动化流水线将代码可靠地交付到生产环境
- 核心流程:代码提交 → 自动化构建 → 自动化测试 → 部署
- 常用工具:Jenkins, GitLab CI, GitHub Actions
1. 原理说明
CI/CD是现代软件开发的核心实践:
- 持续集成(CI):开发人员每天多次将代码合并到主分支。每次提交都会触发自动化流程(构建+测试),快速发现集成错误。
- 持续交付(CD):在CI基础上,自动将通过测试的代码部署到类生产环境,随时可手动发布。
- 持续部署(进阶CD):在持续交付基础上,自动发布到生产环境(需完善测试和监控)。
2. 核心工作流程(以GitHub为例)
# 示例:GitHub Actions 配置文件
name: CI/CD Pipeline
on: [push] # 代码推送时触发
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4 # 获取代码
- name: Build project
run: npm install && npm run build # 构建项目
- name: Run tests
run: npm test # 执行自动化测试
deploy:
needs: build-and-test
if: github.ref == 'refs/heads/main' # 仅主分支触发部署
runs-on: ubuntu-latest
steps:
- name: Deploy to staging
uses: some-deployment-action@v1 # 部署到预发布环境3. 最佳实践
- 保持构建流程快速(不超过10分钟)
- 测试分层:单元测试(快速) → 集成测试 → 端到端测试(较慢)
- 每次提交都触发CI流程
- 使用版本控制分支策略(如GitFlow)
- 部署流程包含人工审批环节(生产环境)
4. 常见错误
- ❌ 本地构建成功但CI失败(环境差异)
- ❌ 跳过自动化测试直接部署
- ❌ 在CI流程中硬编码敏感信息(应使用密钥管理)
- ❌ 流水线步骤设计不合理导致阻塞
5. 扩展知识
- CI/CD工具链:
- 代码仓库:GitHub/GitLab
- 构建工具:Maven/Gradle/npm
- 容器化:Docker
- 编排:Kubernetes
- 关键指标:部署频率、变更前置时间、恢复时间
- 演进路径:手动部署 → 自动化脚本 → CI流水线 → 完整CD → GitOps