前端研发链路之 CI/CD

简介: 本文首发于微信公众号“前端徐徐”,作者徐徐介绍了前端研发链路中的CI/CD。文章从CI/CD的背景、意义、运作方式及常用工具等方面进行了详细探讨,帮助读者理解如何在前端开发中有效应用CI/CD,提升开发效率和产品质量。

本文首发微信公众号:前端徐徐。

大家好,我是徐徐。今天跟大家聊聊前端研发链路中的 CI/CD。

前言

在现代的前端开发工程体系中,CI/CD 在里面扮演着重要的角色,它的出现改变了前端发布的方式,为构建大型应用提供了有利的基础设施,本片文章将分别从CI/CD产生的背景及意义,以及其运作方式和常用的工具来简单探讨一下,希望可以给你带来帮助。

CI/CD是从哪里来的?

从前的软件开发

想象一下,你在搭积木。以前的软件开发就像是你先设计好整个城堡,然后从底到顶一块块搭建,直到全部完成才能看到成果。这种方式叫"瀑布式"开发,就像水从高处流到低处,一步接一步。

新的玩法:敏捷开发

后来,人们发现这样做太慢了,而且容易出错。于是就有了新的玩法,叫"敏捷开发"。这就像是你搭一小部分,玩一下,觉得不好就快速调整,不断重复这个过程。这样做更灵活,也更容易适应变化。

CI的诞生

在敏捷开发中,有个聪明人(Martin Fowler)想到:为什么不经常把大家的积木拼在一起看看呢?这样可以早点发现哪里不对劲。这个想法就是CI(持续集成)的开始。

从CI到CD

CI让大家更容易发现问题,但是把积木(程序)搬到展示台(服务器)上还是很麻烦。于是人们又想到,能不能让这个过程也自动化呢?这就是CD(持续交付/部署)的由来。

云计算和DevOps推波助澜

随着云计算的出现,以及开发人员和运维人员开始更好地合作(DevOps),CI/CD变得更加容易实现和普及。

前端开发也要用CI/CD

现在的网页越来越复杂,就像是从搭简单的小房子变成了搭复杂的城堡。这时,CI/CD在前端开发中就显得特别重要了。它帮助开发人员更容易地管理这些复杂的"城堡"。

CI/CD到底是什么?

简单说说CI/CD

  • CI(持续集成):就像是经常检查你的作业,及时发现并改正错误。
  • CD(持续部署):把检查过的作业自动交给老师(上传到服务器)。

为什么CI/CD这么重要?

  1. 减少错误:经常检查,问题不容易积累。
  2. 加快速度:自动化流程,省去了很多手动操作。
  3. 降低风险:小步快跑,每次改动都不会太大。
  4. 团队协作更顺畅:大家的代码经常合在一起,减少冲突。

前端开发的CI/CD是怎么运作的?

下面画了一个大概的CI/CD的运作流程图,仅供参考。

1. 提交代码

  • 用Git管理代码,就像是给你的积木拍照片,记录每一次改动。
  • 使用分支策略,相当于在不同的桌子上搭积木,互不影响。

2. 自动构建

  • 用工具(如Webpack)把你的代码积木变成一个完整的作品。

3. 自动测试

  • 单元测试:检查每个小零件是否正常工作。
  • 集成测试:检查零件组合在一起是否正常。
  • E2E测试:模拟用户操作,看看整个作品是否正常运转。

4. 代码质量检查

  • 用工具检查代码是否整洁、是否有明显的错误。
  • 确保所有人的代码风格一致,就像确保所有积木的颜色和形状匹配。

5. 自动部署

  • 把检查通过的作品自动放到展示台上(测试服务器、预发布服务器、正式服务器)。

当然,上面提到的至少一些核心的步骤,最主要的还是根据自己的需要,自定义多种脚本去满足自己的发布需求。

常用的CI/CD工具

下面列举一些常用的CI/CD工具,每个工具都有自己的特点,大家可以各取所需。

  1. Jenkins:像是一个勤劳的助手,帮你完成各种自动化任务。
  2. GitLab CI/CD:直接集成在GitLab代码仓库中的自动化工具。
  3. Travis CI:云端的CI服务,特别适合开源项目。
  4. CircleCI:另一个流行的云端CI/CD平台。
  5. GitHub Actions:GitHub自家的CI/CD服务,与GitHub无缝集成。

小贴士

说了这么多,来点我日常开发的一些小技巧吧。

  1. 经常提交小改动,不要攒一大堆再提交。
  2. 能自动化的就自动化,省时省力。
  3. 保证快速反馈,CI/CD过程要够快。
  4. 把CI/CD的配置文件也放在代码仓库里管理。
  5. 确保开发、测试和生产环境尽可能一致,避免"我这里能运行"的问题。
  6. 在CI/CD过程中加入安全检查,防患于未然。

总结

在前端开发中使用CI/CD,就像是给自己找了一个得力助手。它帮你自动完成很多繁琐的工作,让你可以专注于创造性的任务。通过自动化的构建、测试和部署,你和你的团队可以更快地交付高质量的产品,同时还能降低出错的风险。

所以,如果你还没有在你的前端开发流程中引入CI/CD,不妨试试看,你会发现开发工作变得更加轻松和高效,个人觉得 GitHub Actions 真的非常好用,欢迎和我探讨。

相关文章
|
30天前
|
Web App开发 前端开发 安全
前端研发链路之测试
本文由前端徐徐撰写,介绍了前端测试的重要性及其主要类型,包括单元测试、E2E测试、覆盖率测试、安全扫描和自动化测试。文章详细讲解了每种测试的工具和应用场景,并提供了选择合适测试策略的建议,帮助开发者提高代码质量和用户体验。
29 3
前端研发链路之测试
|
1月前
|
资源调度 前端开发 JavaScript
前端研发链路之脚手架
本文首发于微信公众号“前端徐徐”。文章介绍了前端开发中脚手架工具的重要性及其工作原理。脚手架工具能够大幅提升开发效率,确保代码质量和项目一致性。文章详细探讨了脚手架的历史、工作原理、常见工具及其优势与潜在问题,并展望了其未来发展方向,帮助开发者更好地理解和应用脚手架工具。
26 4
前端研发链路之脚手架
|
30天前
|
负载均衡 前端开发 JavaScript
前端研发链路之开发
本文首发于微信公众号“前端徐徐”,作者徐徐。文章介绍了前端研发链路中的开发部分,重点探讨了开发服务器(dev-server)、热更新(hot-reload)、数据模拟(mock)和代理(proxy)等关键技术,帮助开发者理解其基本原理和应用场景,提升开发效率和代码质量。
34 2
前端研发链路之开发
|
30天前
|
前端开发 JavaScript 编译器
前端研发链路之构建
本文首发于微信公众号“前端徐徐”,作者徐徐探讨了前端研发链路中的构建过程。文章介绍了构建器、JavaScript编译器和CSS编译器的作用及常见工具,详细解析了它们如何协同工作,提高开发效率和项目可维护性。适合前端开发者阅读,帮助理解现代前端构建体系。
15 1
前端研发链路之构建
|
30天前
|
前端开发 JavaScript 测试技术
前端研发链路之代码规范
大家好,我是徐徐。本文将探讨前端研发链路中的代码规范,包括业界流行规范、CSS命名规范和相关工具。通过保持代码整洁和一致性,不仅能提高团队协作效率,还能减少错误,提升开发质量。文中详细对比了几种常见的代码规范和工具,如 Airbnb Style Guide、BEM、Eslint 和 Prettier,并展望了未来代码规范的发展趋势。希望对大家有所帮助。
63 1
前端研发链路之代码规范
|
24天前
|
缓存 JavaScript 前端开发
拿下奇怪的前端报错(三):npm install卡住了一个钟- 从原理搞定安装的全链路问题
本文详细分析了 `npm install` 过程中可能出现的卡顿问题及解决方法,包括网络问题、Node.js 版本不兼容、缓存问题、权限问题、包冲突、过时的 npm 版本、系统资源不足和脚本问题等,并提供了相应的解决策略。同时,还介绍了开启全部日志、使用替代工具和使用 Docker 提供 Node 环境等其他处理方法。
292 0
|
25天前
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
108 2
|
25天前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
35 0
|
25天前
|
人工智能 自然语言处理 运维
前端大模型应用笔记(一):两个指令反过来说大模型就理解不了啦?或许该让第三者插足啦 -通过引入中间LLM预处理用户输入以提高多任务处理能力
本文探讨了在多任务处理场景下,自然语言指令解析的困境及解决方案。通过增加一个LLM解析层,将复杂的指令拆解为多个明确的步骤,明确操作类型与对象识别,处理任务依赖关系,并将自然语言转化为具体的工具命令,从而提高指令解析的准确性和执行效率。
|
25天前
|
存储 弹性计算 算法
前端大模型应用笔记(四):如何在资源受限例如1核和1G内存的端侧或ECS上运行一个合适的向量存储库及如何优化
本文探讨了在资源受限的嵌入式设备(如1核处理器和1GB内存)上实现高效向量存储和检索的方法,旨在支持端侧大模型应用。文章分析了Annoy、HNSWLib、NMSLib、FLANN、VP-Trees和Lshbox等向量存储库的特点与适用场景,推荐Annoy作为多数情况下的首选方案,并提出了数据预处理、索引优化、查询优化等策略以提升性能。通过这些方法,即使在资源受限的环境中也能实现高效的向量检索。
下一篇
无影云桌面