【CICD】课程简介
一、课程简介
CICD(Continuous Integration; Continuous Deployment)是帮助软件工程师从刀耕火种的人力操作迈向现代工业化流水线作业的重要方式,它能够帮助我们提升项目整体的规范性,提升产研效率,以及幸福度。
因此,学会 CICD 是能够切切实实的提升开发者体验的手段。而另一方面,市面上各种各样的 CICD 系统也有很多,如何选型,怎么选型,如何去有效利用,也是一门有讲究的学问。
为此,作者会以通用技术的视角去帮助大家了解 CICD 的魅力,帮助大家成长。虽然,本课程不会去评论市面上各种系统的优劣,但是相信大家在学会本课程之后,这些问题都会有自己的答案与见解。
二、课程亮点
- 通用技术:本课程不会教你如何使用某个具体的系统,而是会更加注重通用原理。学会本课程,不论是哪种环境都能得心应手。
- 进阶必须:本课程能帮助读者从单纯的业务代码中走出来,了解到一个项目的DevOps流程。对于初级软件工程师来说一定的视野高度是帮助自己的职业生涯进阶的有效手段。
- 提升DX:CICD 就类似于农民的收割机,没有收割机手动去做事也能成事,但是如果能将繁杂的人力劳动转变为更加优雅的自动化,那么有什么理由拒绝呢?
- 规范协作:学习本课程,能帮助项目团队统一规范,便于团队协作,提升产研效率。
三、用户痛点
- 项目不规范,协作的同学有不同的编程爱好和习惯。在不同的系统/editor下会出现大量的无意义变更导致项目协同困难。
- 其他同事提交的代码有问题导致所有拉取最新代码的同事不得不等待修复完毕后才能工作,大大减少了工作效率
- 测试环节拿到的版本存在滞后性,需要依赖开发人员的部署与通知才能进行下一个环节,整体效率低下,开发人员无法把精力集中在具体业务中
- 每个项目/团队的手动部署方式都有不同,需要额外学习成本
- 开发者渴望往更高方向走,去带领团队一起做项目但是不知道如何组织
四、课程设计思路
针对以上问题,我们的图文课将会从CICD的底层哲学讲起,让大家了解为什么会有CICD,CICD会帮助大家解决什么样的问题,应当如何入门CICD,以及如何掌握CICD。
在每节的结束,将会以实战的方式带大家完成一个日常中常见的用户场景,通过理论和实战相结合的方式帮助大家更好的消化所学内容。相信在学习本课程之后大家都拥有独自处理这方面场景的能力。
另外,为了方便大家去更好的实践,本课程的学习只需要一些最基本的网络设备即可。不会要求大家去搭建一些复杂的系统。本课程的侧重点在于教大家更加通用的知识而不是特定的知识。
我在过去的开发经历中发现,不论做的是什么项目,DevOps的思维都是能够提升研发效率的万能药,这是一种可以在任何情况下都能提升个人或者团队整体开发效率思维模式,而CICD就是将DevOps落地的一种不可或缺的技术手段。这就是为什么我会选择CICD作为我的第一本图文课程。相比于学习一门技术,我认为学习一种思维给开发者带来的是更加长远的好处。
五、作者简介
作者 Hask(aka moonrailgun) 毕业于辽宁工程技术大学,于 2021 年加入字节跳动,负责飞书团队网页后台的前端研发工作。拥有6年前端工作经验,是由兴趣推动的软件工程师,做过微内核框架、文本编辑器二次开发、音视频会议二次开发、低代码平台以及各类打包插件、提效工具等等,做过完整的IM即时通讯应用。对前端许多领域都有所涉猎,对后端技术也有一定了解,各种项目的经验能够带来的是更加广阔技术视野。
作者Github: https://github.com/moonrailgun
六、真实案例
在现实生活中的CICD实践推荐: 开源项目 Tailchat. 经过真实实践验证的解决方案,包含: 前后端单元测试、集成测试、E2E测试、Docker 镜像构建、Docker compose 服务编排,自动化发布版本、发布容器镜像、发布移动端应用、部署文档网站....如果觉得不错的话欢迎 star 支持作者。
Tailchat 开源地址: https://github.com/msgbyte/tailchat
