前端项目部署优化-版本号自动生成

97 阅读2分钟

一、存在问题

公司采用jenkins做持续集成工具,在项目发布生产的过程,jenkins会先拿到项目所有版本号,对比最新版本号与最后一次发布版本号的差异,决定是否执行发布操作,因此要求每次在发布线上环境之前,开发人员需要在代码仓库中手动添加一个发布版本号。 这样的流程比较半自动,版本号需要依赖人工操作,一但PR前忘记添加版本号,整个pr流程就得重新走一遍,发布耗时,流程繁琐。

二、优化目标

能按一定规则自动生成版本号,自动写入版本号,更新commit和tag。

三、具体实现

  1. 使用standard-version生成和管理项目发布版本。(自动生产版本号要具备语义,对每一次代码commit有一定的规范要求,具体可阅读[Angular 的提交规范]相关文章)

standard-version是 conventional-changelog 推荐使用的标准化 npm 版本生成工具,它可以取代 npm version 指令,并提供更简便、语义化的调用方式。

2.项目代码改动 在 ‘package.json’ 中新增下面新增包和命令

"scripts": { ... "release": "standard-version" }

 "devDependencies": { ... "standard-version": "^9.5.0" }
  1. jenkins改造 在install和build阶段增加两个命令,对应上面的两个步骤,运行relase命令,将生成出来的commit推送到远程,把tag也推送到远程,保证更新同步
install npm run release 

git push origin HEAD:master 

git push --tags 

npm run build

四、扩展知识

1、npm 语义化版本,共三位,以’.’隔开,从左至右依次代表:

  • 主版本(major)
  • 次要版本(minor)
  • 补丁版本(patch)

2、版本变更的推荐采用以下策略:

代码状态等级规则版本样例
首次发布新品发布以1.0.0开始1.0.0
bug 修复,向后兼容补丁版本发布变更第三位数字1.0.1
新功能,向后兼容次版本发布变更第二位数字,并且第三位数字重置为 01.1.0
重大变更,不向后兼容主版本发布变更第一位数字,并且第二位和第三位数字重置为 02.0.0