# 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进阶