# 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:插件丰富但需自行维护服务器。
lastUpdate: 5/28/2025, 11:15:06 PM