因为Github Actions 线上版本构建部署是通过Tag来触发的,并且Tag要按照一定的规则来,以完成线上版本的控制。为了减少人工打Tag带来的失误,因此开发一个CLI命令行工具辅助上线前的打Tag工作。
打tag规则:[分支名]-[版本号]-[日期]
前端私有化项目打tag的同时会自动生成一份Dockerfile文件,以适配腾讯云容器构建。
// 全局安装
npm install -g @belloai/bello-version
// 使用命令 查看帮助
belloVersion
// 打tag
belloVersion tag我们可以创建一个tag来指向软件开发中的一个关键时期,比如版本号更新的时候可以建一个“v2.0”、“v3.1”之类的标签,这样在以后回顾的时候会比较方便。 tag的使用很简单,主要操作有:查看tag、创建tag、验证tag以及共享tag。
同时为了触发腾讯云容器服务的docker构建,以便docker从COS对象存储中拉取前端源码,加快部署时间。因此Tag的命名规则为:release/sass-v1.4.2-2021-11-16
release:为前缀,意为发布版本。sass: 为分支名,意为需要把代码更新到sass分支,并触发腾讯云容器服务构建。v1.4.2:为版本,意为当前项目的版本号,会根据功能自增minor,patch版本。- 最后的后缀很明显了,就是当前打Tag的日期。
git tag v1.4.2:创建tag
git tag -a v1.4.2 -m 'first version':带信息的tag:-m后面带的就是注释信息,这样在日后查看的时候会很有用
git tag: 查看tag,列出所有tag,列出的tag是按字母排序的,和创建时间没关系
git show v1.4.2: 显示指定tag的信息
git push origin v1.4.2:推送tag到gitHub仓库
git push origin --tags:将所有tag 一次全部push到github上
git tag -d v1.4.2: 删除本地tag
git push origin :refs/tags/v1.4.2: 删除github远端的指定tag
git checkout -b new-branch v1.4.2:创建一个基于指定tag的分支
cac chalk inquirer semver simple-git,简单介绍下
专门用于构建CLI应用程序的JavaScript库,对用户的输入进行提示,纠正以及解析,比如 version --help 就会显示CLI可用的命令行参数都有些啥。

// 当用户只输入version时,显示其他command的友好提示
cli.command("").action(() => {
cli.outputHelp();
});
// version tag时执行,支持传入option参数,来控制流程
cli
.command("tag", "Generate Tag for Current Version")
.allowUnknownOptions()
.action(() => {
handleVersionTag();
});用于美化Terminal中的字符,可以显得花里胡哨点。
基本是CLI工具与用户进行交互必用的包了,可以收集用户输入,进行交互以执行不同的操作。
易用,更语义化的版本管理库,semver会按[semantic versioner](https://semver.org/)规则去做版本管理。
吹爆的git操作库,在node中可以自在的使用git操作,包括add,commit,push,pull,fetch等等,如获取本地分支:git.branchLocal(),打tag:git.addTag('tag'),基本git能做的都能在node中调用来实现。

