CICD的理解
CICD的理解
面试口述要点(约 1 分钟)
CI/CD 是持续集成(Continuous Integration)与持续交付/部署(Continuous Delivery/Deployment)的简称,核心目标是通过自动化提升交付效率、质量与一致性:
- 持续集成(CI):开发者频繁提交代码到主干,触发自动化构建、单元测试、静态扫描、依赖检查,快速发现集成问题与冲突,保证主干可随时发布。
- 持续交付(CD-Delivery):在 CI 基础上自动化环境部署(Dev/Test/Staging),通过集成测试、E2E 测试、性能测试验证发布候选,手工审批后推生产。
- 持续部署(CD-Deployment):更进一步,所有通过测试的变更自动部署到生产,依赖金丝雀/蓝绿/灰度策略与监控回滚机制,降低人工干预。
- 核心流程:代码提交 → 触发 Pipeline → 构建镜像/制品 → 运行测试 → 制品推送仓库 → 部署目标环境 → 健康检查/烟测 → 验收/回滚。
- 关键实践:分支策略(GitFlow/Trunk-based)、自动化测试覆盖、环境隔离与一致性(IaC/容器化)、快速反馈与回滚、制品版本化与 Immutable。
- 常用工具链:源码管理(Git/GitLab/GitHub)、CI 引擎(Jenkins/GitLab CI/GitHub Actions/Tekton)、构建工具(Maven/Gradle/Docker)、制品仓库(Harbor/Artifactory)、部署编排(Kubernetes/Helm/ArgoCD)、监控告警(Prometheus/Grafana)。
相关高频面试题与简答
问:CI 与 CD 的区别是什么?
答:CI 聚焦自动化构建与测试以保证主干质量;CD-Delivery 扩展到自动化环境部署与验收但需人工审批推生产;CD-Deployment 实现全自动推生产无需人工。问:如何保证 CI/CD Pipeline 的速度与质量?
答:分层测试策略(单元快/集成中/E2E 慢),并行执行,缓存依赖与构建产物,增量测试,失败快速反馈;质量门禁(覆盖率/静态扫描/安全扫描)自动拦截低质量变更。问:常见的发布策略有哪些?
答:蓝绿部署(切流量零停机)、金丝雀发布(小流量验证)、滚动更新(分批替换)、灰度发布(特定用户/地域);配合健康检查与监控指标自动回滚。问:如何在 Kubernetes 中实现 CI/CD?
答:CI 阶段构建容器镜像并推送到 Harbor/镜像仓库;CD 阶段通过 Helm/Kustomize 更新配置,kubectl/ArgoCD 触发 Deployment 滚动更新;GitOps 模式用 ArgoCD/Flux 监听 Git 自动同步。问:如何处理数据库变更与回滚?
答:DB 迁移脚本版本化(Flyway/Liquibase),向前兼容设计(增量式变更),先部署兼容旧版本的代码再执行 DDL;回滚准备反向脚本并验证,或用蓝绿环境隔离数据库。问:Pipeline 失败了如何快速定位?
答:查看 Pipeline 日志与失败阶段,关注编译错误/测试失败/镜像构建失败;本地复现(Docker/环境变量一致);检查依赖变更、网络问题、资源限制,回滚可疑提交或修复后重试。