前端项目使用语义化版本进行发布:
版本格式:主版本号.次版本号.修订号,版本号递增规则如下:
先行版本号及版本编译元数据可以加到“主版本号.次版本号.修订号”的后面,作为延伸。
master分支表示一个稳定的发布版本.
v{version}@{SSA_version}
, 例如 v0.1.0@SSA_1.1开发者主要工作的分支, 最新的特性或bug修复都会提交到这个分支. 开发者如果在该分支进行了提交,在push到远程之前应该先pull一下, 并尽量使用rebase模式,保证分支的简洁
git rebase
形式更新本地分支。涉及多人协作或者大功能的开发, 应该从dev分支checkout出独立的feature分支, 避免干扰dev分支
场景:
命名规范
合并时机
合并方式
临时的预览分支, preview分支用于临时合并feature分支, 这其中可能会修复某些bug或者冲突. 可以选择性地将这些提交cherrypick回feature分支. 当预览结束后就可以销毁preview分支
release分支主要是临时创建修改某个发布版本的bug修复分支
release-{SSA_version}
外部人员只会关注SSA版本一个好的提交信息, 会帮助你提高项目的整体质量.
我们采用基于angular的提交规范, 简化和扩展了不同点。
<type>(<scope>): <subject>
<body>
<footer>
如果提交时feature或者fix(已发布的版本), 这些提交信息应该出现在CHANGELOG
可选. 对本次提交的详细描述. 如果变动很简单, 可以省略
可选. 只用于说明不兼容变动(break change)和关闭 Issue(如果使用gitlab上的Issuse,#1542)或禅道BUG号(#zentao203)
# 50-character subject line
#
# 100-character wrapped longer description. This should answer:
#
# * Why was this change necessary?
# * How does it address the problem?
# * Are there any side effects?
#
# Include a link to the ticket, if any.
参考vue, angular等开源库项目的提交
如果项目上配有gitlab-ci,可以在标题header
上添加 [ci skip]
即可跳过本次提交CI.
git commit
提交信息的验证,依赖于@commitlint/cli
, husky
注:如果使得 vue-cli 3
创建的项目,默认已经有yorkie,不再需要安装 husky
配置 commitlint.config.js
推荐使用:
@smart/commitlint-config
module.exports = {
extends: ['@smart/commitlint-config']
}
或者使用依赖@commitlint/config-conventional
, 并配置扩展下面:
module.exports = {
extends: ['@commitlint/config-conventional'],
rules: {
'type-enum': [2, 'always', [
'Feat', 'New', 'Fix', 'Docs', 'Style',
'Test', 'Chore', 'Revert', 'Perf',
'Build', 'Release', 'Safe'
]],
'type-case': [2, 'always', 'start-case'],
'subject-full-stop': [0, 'never'],
'subject-case': [0, 'never'],
'header-max-length': [2, 'always', 80]
}
}
package.json
添加上
"husky": {
"hooks": {
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
}
}
// 或者
"gitHooks": {
"pre-commit": "vue-cli-service lint --no-fix",
"commit-msg": "commitlint -E GIT_PARAMS"
},
还可以添加其他钩子,比如:"pre-commit": "npm run lintNofix"
配置好后就可以在git commit
时验证通过后,才能提交!
安装conventional-changelog-cli
和 @smart/conventional-changelog-smart
使用命令,即可方便生成出CHANGLOG.md更新日志文件
conventional-changelog -n ./node_modules/@smart/conventional-changelog-smart/index.js -i CHANGELOG.md -s -r 0
公司使用禅道管理bug,而非gitlab上的Issues
对于测试,目前会经历两个阶段
BUG的数量可能会和个人的KPI挂钩。所以要谨慎自测
npm version
命令提升package.json
的版本号, 更新CHANGELOG.md前端项目基于公司内部部署的gitlab-ci来进行持续部署。包含以下阶段(stage):
[ci skip]
来跳过这个阶段目前前端资源是跟随后端Jar/War包一起部署的,通过将构建结果推送到一个’git发布版本库’的形式实现.