编辑
2024-05-29
👨‍🎓 无限进步
00
请注意,本文编写于 386 天前,最后修改于 225 天前,其中某些信息可能已经过时。

目录

CI/CD Pipeline Explained in Simple Terms
Netflix Tech Stack (CI/CD Pipeline)

参考链接

CI/CD Pipeline Explained in Simple Terms

image.png

第1节 - 使用CI/CD的软件开发生命周期(SDLC)

软件开发生命周期(SDLC)包括几个关键阶段:开发、测试、部署和维护。CI/CD自动化并整合这些阶段,以实现更快、更可靠的发布。

当代码被推送到git仓库时,它会触发一个自动化的构建和测试过程。运行端到端(e2e)测试用例来验证代码。如果测试通过,代码可以自动部署到预生产/生产环境。如果发现问题,代码会被送回开发环节进行修复。这种自动化为开发者提供了快速反馈,并降低了生产环境中出现bug的风险。

第2节 - CI和CD的区别

持续集成(CI)自动化了构建、测试和合并过程。每当代码提交时,它都会运行测试以尽早发现集成问题。这鼓励频繁提交代码和快速反馈。

持续交付(CD)自动化了发布过程,如基础设施变更和部署。它确保软件可以通过自动化工作流在任何时间可靠地发布。CD还可以自动化在生产部署之前所需的手动测试和批准步骤。

第3节 - CI/CD管道

典型的CI/CD管道有几个连接的阶段:

  • 开发人员将代码更改提交到源代码控制
  • CI服务器检测到更改并触发构建
  • 代码被编译和测试(单元测试、集成测试)
  • 测试结果报告给开发人员
  • 成功后,构件被部署到预生产环境
  • 在发布之前,可能在预生产环境中进行进一步测试
  • CD系统将批准的更改部署到生产环境

Netflix Tech Stack (CI/CD Pipeline)

image.png

  • 规划:Netflix工程团队使用JIRA进行规划,使用Confluence进行文档记录。

  • 编码:Java是后端服务的主要编程语言,而其他语言则用于不同的用例。

  • 构建:主要使用Gradle进行构建,并构建了Gradle插件以支持各种用例。

  • 打包:将包和依赖项打包成Amazon机器映像(AMI)以供发布。

  • 测试:测试强调生产文化对构建混沌工具的关注。

  • 部署:Netflix使用其自建的Spinnaker进行金丝雀发布部署。

  • 监控:监控指标集中在Atlas中,Kayenta用于检测异常。

  • 事件报告:根据优先级分派事件,使用PagerDuty进行事件处理。

本文作者:Eric

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!