# 1.基础概念
- CI、CD介绍
- CI(持续集成):频繁合并代码到主干,通过自动化测试快速发现错误。
- CD(持续交付/部署):代码通过测试后全自动化部署到生产环境。
# GitLab CI/CD的核心组件
- .gitlab-ci.yml配置文件、GitLab Runner、Pipeline(构建/测试/部署阶段)。
# 如何触发GitLab CI/CD流水线?
- 代码推送、合并请求、API调用或定时触发。
以下是60个GitLab CI/CD面试问题及答案的精选汇总,涵盖基础概念、配置优化、安全实践及故障排查等核心场景:
# 2.配置与优化
- .gitlab-ci.yml中cache与artifacts的区别
- cache:临时存储依赖(如node_modules),加速后续构建。
- artifacts:保留构建产物(如二进制文件)供后续阶段使用。
- 如何并行化测试任务?
- 使用parallel关键字或拆分测试到多个job。
- 优化大型项目CI/CD性能的方法
- Docker缓存、并行执行、增量构建、专用Runner。
# 3.安全与部署
- 如何保护敏感信息(如API密钥)?
- 使用GitLab的受保护变量或集成HashiCorp Vault。
- 实现蓝绿部署的步骤
- 定义两个环境(蓝/绿),通过流量切换(如Kubernetes Service)逐步发布。
- 如何处理数据库迁移?
- 单独migration作业,在部署前执行rails db:migrate等命令。
# 4.故障排查
- 调试失败作业的方法
- 查看日志、启用DEBUG模式、本地用gitlab-runner exec复现。
- 流水线卡顿的常见原因
- Runner资源不足、未清理的缓存、网络延迟。
- 如何回滚部署?
- 定义回滚作业或使用GitLab环境回滚功能。
# 5.高级场景
- 动态环境的用途
- 为每个分支自动创建临时测试环境(如review-apps)。
- Monorepo项目的CI/CD策略
- 通过rules仅触发受更改影响的子目录任务。
- 集成Kubernetes的步骤
- 在GitLab中绑定集群,使用kubectl或Helm部署。
# 6.工具对比
- GitLab CI vs Jenkins
- GitLab CI:内置YAML配置,与GitLab深度集成。
- Jenkins:插件丰富但需自行维护服务器。
← Git进阶