# 前言

俗话说的好:不喜欢折腾造轮子的工程师不是一个合格的工程师。今天就带来最新的小工具轮子,之前的vue组件平台服务器快要到期了,并且也要进入二次开发了,所以暂时可能要无法访问了(应该3月中旬后),现在还没有玩过的大佬可以去看看哦。 点我! (opens new window)

今天带来的不仅仅是一个实用的小工具,同时也是一个对于项目规范化开发流程的一个模式,具体是什么模式后面来进行说明。首要目的是:项目开发过程出问题几率减少,这就需要我们对开发以及后续的流程进行规范化的管理,同时也让我们工程师用的舒心。 https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/9fc20e82c64a4466b4792c83144d5e9e~tplv-k3u1fbpfcp-watermark.image

# 项目工程化

项目工程化,不仅仅在于我们写的代码的可扩展性、可维护性,它更主要的目的是在于如何使我们整个开发流程的高效率、稳定。

工程化解决的问题是,如何提高编码、测试、维护阶段的生产效率。

所以作为一个好的工程师我们怎么能没有一个好的工程化概念呢?

到这里大家可以回想一下现在所做项目的整体流程是否清楚,如果清楚可以试想一下以下问题:

  • 新功能开发或bug修复完成后,测试是否能第一时间知道进行测试
  • 测试的代码是否已经是你修改的了,代码是否部署到测试环境
  • 测试完成后合并上线,临时功能紧急下线能否准确进行代码回滚
  • 每次提交是否能准确知道到底提交了什么内容
  • 你的代码是否经常被同事给冲突掉,导致问题出现

这些问题都是我在实际开发中遇到的,那么在工程化概念中咋们的开发、测试流程就会显得没有规范,就很难受。这一难受我就想怎么改,然后就进行思考如何优化这些不规范的东西。(大量文字预警) https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/704122f30a6846eab362ac0818e63434~tplv-k3u1fbpfcp-watermark.image

# 项目迭代流程

这是本人基于现有公司的理解、认识所进行的总结分析得出的流程。

https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/8cb824c0d7a34045a964a2fb12a52a70~tplv-k3u1fbpfcp-watermark.image

上面的图片解析如下:

  • 通过自动化创建分支,且可以强制限定一个bug或一个需求对应一个分支,减少bug之间的关联(防止一次提交多个bug+多个需求,对于代码回滚来说是噩梦)
  • 开发人员对于提交信息规范化,也可以减少git和任务仓库关联工作量
  • 进行mr请求更便捷,通过命令行即可
  • 通过打tag触发自动化更新,同时也可以自动化生成发版日志让测试进行测试(这里需要说明一下在任务发布的时候其实就已经有了,但是实际操作中经常出现延期和提前的问题,导致开发不能随意完结任务,需要等待发版后再把自己的任务转到测试头上,这样开发可以在提交后直接完成任务进入待验证区,测试通过发版日志选择性的测试)
  • 如果出现某个功能不需要上或者bug修改出错时进行代码回滚可以通过任务信息关联的git提交记录来确认提交内容,同时由于进行了一个分支对应一个bug或需求可以大大减少任务之间的代码相互影响

当然了这么多文字的流程规范,虽然还是不能适合每个项目的开发,但整体来说我觉得应该算是一个标准项目的迭代过程。

如果你的工程不适合的话,可以直接了解一下这个下面的工具是否有用。

# 抛砖引“玉”

经过如上的分析我们可以得到一个开发-测试的循环流程,既然开头就说了造了一个轮子,就先来看一下轮子的功能吧,放一个工程md文档的片段。

注:现阶段轮子支持的维度是jira + gitlab这一套工作流程。(当然了可以自主修改)

// 自动化commit流程
'lzgit lz / lzgit l'

// 自动获取jira、commit信息
'lzgit commit / lzgit c'

// 修改脚手架基础配置信息
'lzgit config / lzgit cf'

// 提交mr请求
'lzgit mr / lzgit m'

// 自动化push推送
'lzgit push / lzgit p'

// 修改整体配置
'lzgit config / lzgit cf'

// 创建新的开发分支
'lzgit branch / lzgit b'

如果看了以上命令有所不理解的可以专门看下面的关键指令的详细执行流程就可以了解具体功能实现了。

# lzgit commit

本指令会代替以前我们的整体commit流程,这个指令进行了如下运行 https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7ad0a49c0fd44a2dadb98c580d58716c~tplv-k3u1fbpfcp-watermark.image

# lzgit mr

本指令会自动在gitlab上进行mr请求的发布,运行操作如下 https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a413c0411c69430983579c9adf1050a8~tplv-k3u1fbpfcp-watermark.image

# lzgit branch

本指令会自动创建开发分支,由此指令创建的分支,在提交信息时可以不用进行填写选择 https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f1c0b7ed57ed44fdbc1cd8acf68d73b7~tplv-k3u1fbpfcp-watermark.image

# lzgit lz

本指令是完成开发时的全流程集合,会自动化进行commit、push、mr请求操作 https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2bb90bd8ad5441d890d4cf21589fb22e~tplv-k3u1fbpfcp-watermark.image

# lzgit push

本指令就是简单的对分支先行进行了pull后再push的操作

# lzgit config

本指令是对一些程序的配置进行修改,较为简单可以尝试一下就明白了

# lzgit

上文其实已经说了这么多关于lzgit的使用和一些流程了,那么这个lzgit到底是什么东西怎么用的呢?就是需要在这说明的了。

总结以下关键几点:

  • 基于node环境
  • 使用ts编写
  • 可以得出使用npm进行包管理
  • 代码托管在gitee上

当然了,虽然我是个前端做出来的东西是基于nodejs的,但是使用不受限制呀,环境安装个nodejs就行了,然后就可以进行使用了。

# 安装命令

npm install -g lazy-git-cli

# 工具简介

一个辅助进行Git提交、Jira关联、Mr合并请求提交、发版日志生成以及开发分支管理工具,只需要进行简单的配置后生成项目专用的文件配置(如不用分支管理则不用进行配置)

现阶段使用的为大多数公司管理流程:GitLab + Jira , 只要你的公司或项目是利用这个进行敏捷开发的都可以使用该工具

# 工具小结

如果真的你认真读到这里了会发现有一个关键的东西工具没有完成,自动化生成发版日志

通过上面的工程化流程介绍可以看出测试是通过发版日志和jira完成列表来进行bug的测试和回归,这样双面确认可以保证我们做完了jira测试可以明确知道哪个jira已经发版了可以开始测试,而哪些没有发版暂时无法测试,保证效率而不会出现测试打回来开发明明已经修改了的jira,只是因为没有部署测试环境。

在这简单说明一下,这个轮子暂时局限性比较大,如果真的有人开始使用了我就会把接口进行完善,进行多端的适配,所以暂时功能没有完全完成(其实就是懒)。

如果你想用工具的话,麻烦在底部评论一个“小老弟,快去完成xxx”,如:“小老弟,快去完成发版日志生成”

本人: https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6346fcb40ac1453d8099e6ce549a6457~tplv-k3u1fbpfcp-watermark.image

本文主要在于梳理流程和介绍工具,如果想知道整体开发技术,也在评论告诉我哦,立马就出下一篇文章

# 最后

那就在最后的最后把一些地址发布出来供各位大佬审批:

https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4dd4cad9b7be418d9e28ab7d7d577ba8~tplv-k3u1fbpfcp-watermark.image

创建人:yinyanting