CICD 面试题

八股文,开刷!

1. 介绍一下什么是CI\CD?

  • CI(代码集成与测试)
  • CD(发布与部署)

2.如何设计CICD?(重点)

  • CI拆分详解

核心目标与重要性:

CI流程的核心目标是确保代码频繁、高质量地合并到主干,并通过自动化测试快速发现缺陷。在大型项目中,多个开发人员同时进行代码开发,如果不能及时集成和测试,很容易出现代码冲突和隐藏的缺陷。频繁集成代码可以让团队成员及时发现并解决问题,保证代码的一致性和稳定性。

关键环节:

  1. 研发本地开发与代码上传:开发人员在本地进行代码编写和调试,完成后将代码上传到测试环境。这是整个CI流程的起点,代码的质量直接影响后续的测试和部署。
  2. QA介入测试:为了保证QA测试的代码和上线代码保持一致,可以锁定分支或锁定COMMIT。这就像是给代码上了一把锁,确保在测试过程中代码不会被意外修改。QA人员对上传的代码进行测试,如果发现问题,将代码打回给开发人员修改,然后重新进行测试。这个过程可能会反复进行,直到代码通过测试。
  3. 静态代码检查:通过自动化工具(如ESLint、SonarQube)对代码进行静态检查,在代码提交阶段就发现并阻止这些低级错误进入主分支。
  4. 构建与单元测试:使用构建工具(如Maven/Gradle)编译代码生成可执行包(如Java的.jar、前端的dist),并运行单元测试(Jest、JUnit)验证逻辑正确性。通过Jenkins应用调用这些工具,还可以生成测试覆盖率报告,帮助开发人员了解代码的测试情况。

image.png

  • CD拆分详解

核心目标与意义:

CD流程的核心目标是将已验证的代码快速、可靠地部署到目标环境(测试/生产)。通过自动化的部署流程,可以减少人工干预,提高部署的效率和准确性,确保软件能够及时上线。

关键环节分析:

  1. 环境准备与部署:如k8s,docker,单体服务器。
  2. 发布策略控制:将代码部署到预生产环境(如Staging),需要人工审批后再发布至生产环境。这种方式可以在上线前进行最后的验证,确保代码的稳定性。全自动化发布到生产环境,如蓝绿部署、金丝雀发布。蓝绿部署是指同时维护两个相同的生产环境,一个用于当前版本的运行,另一个用于新版本的测试,测试通过后切换到新版本;金丝雀发布是指先将新版本的代码部署到一小部分用户中进行测试,观察用户反馈后再逐步扩大范围。

image.png

3. jenkins流水线执行失败如何排查?

  • 查看流水线控制台输出:具体在哪个阶段导致失败了?
  • 拉代码?
  • 代码静态检测?
  • 代码编译?
  • 构建镜像or部署?

4. cicd中如何解决多项目多jdk/node版本的?

在实际工作中,有些新老项目可能存在jdk版本不同的问题,那如何解决jenkins job构建时指定版本?

  1. 利用tools指令在Pipeline中动态指定JDK版本。
  2. 使用多台jenkins实例,安装不同的jdk版本
  3. 引入k8s 动态jenkins slave
正文到此结束
最后修改:2025 年 06 月 12 日
如果觉得我的文章对你有用,请随意赞赏