Loading... # 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应用调用这些工具,还可以生成测试覆盖率报告,帮助开发人员了解代码的测试情况。  - CD拆分详解 > 核心目标与意义: > > CD流程的核心目标是将已验证的代码快速、可靠地部署到目标环境(测试/生产)。通过自动化的部署流程,可以减少人工干预,提高部署的效率和准确性,确保软件能够及时上线。 > > 关键环节分析: > > 1. **环境准备与部署**:如k8s,docker,单体服务器。 > 2. **发布策略控制**:将代码部署到预生产环境(如Staging),需要人工审批后再发布至生产环境。这种方式可以在上线前进行最后的验证,确保代码的稳定性。全自动化发布到生产环境,如蓝绿部署、金丝雀发布。蓝绿部署是指同时维护两个相同的生产环境,一个用于当前版本的运行,另一个用于新版本的测试,测试通过后切换到新版本;金丝雀发布是指先将新版本的代码部署到一小部分用户中进行测试,观察用户反馈后再逐步扩大范围。  ### 3. jenkins流水线执行失败如何排查? - 查看流水线控制台输出:具体在哪个阶段导致失败了? - 拉代码? - 代码静态检测? - 代码编译? - 构建镜像or部署? ### 4. cicd中如何解决多项目多jdk/node版本的? > 在实际工作中,有些新老项目可能存在jdk版本不同的问题,那如何解决jenkins job构建时指定版本? > > 1. 利用`tools`指令在Pipeline中动态指定JDK版本。 > 2. 使用多台jenkins实例,安装不同的jdk版本 > 3. 引入k8s 动态jenkins slave 最后修改:2025 年 06 月 12 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 2 如果觉得我的文章对你有用,请随意赞赏