levit / versioning-bundle
Symfony LevitVersioningBundle
v1.1.0
2021-01-15 12:23 UTC
Requires
- php: >=5.5.9
Requires (Dev)
- symfony/console: ^4.0
- symfony/yaml: ^4.0
README
用于语义化版本控制和从提交信息中生成变更日志的Symfony包。
用法
安装
更新你的 composer.json
"require-dev": {
...
"levit/versioning-bundle": "1.*"
},
更新你的 AppKernel.php
并注册bundle
if (in_array($this->getEnvironment(), ['dev', 'test'], true)) {
...
$bundles[] = new Levit\VersioningBundle\LevitVersioningBundle();
}
在项目根目录创建 versioning.yml
并使用默认设置
provider: Git
groupList:
- { groupName: Release, keywordList: [RELEASE], upgrade: MAJOR, changelog: false }
- { groupName: Features, keywordList: [FEATURE], upgrade: MINOR }
- { groupName: Bugfixes, keywordList: [HOTFIX, FIX, BUG, BUGFIX], upgrade: PATCH }
- { groupName: Refactoring, keywordList: [REFACTORING], upgrade: PATCH }
- { groupName: Documentation, keywordList: [DOCS], upgrade: PATCH }
提交信息
提交信息 必须有特定的标题:(每个包含关键字的提交将被生成到变更日志中,其他将被忽略)
- 第一个是表示严重性的关键字(HOTFIX,FIX,BUG,FEATURE,DOCS,REFACTORING)
- 类型后可以跟一个可选的带sharp的ticket号
- 简短描述添加或修复的内容
示例
Hotfix: Oprava zobrazení homepage
Feature: Přidává zobrazení uživatelského jména v top baru
Docs: #1 Návod na přidávání funkcí
在本地验证并通过所有测试,提交并准备好上线后,你可以在控制台中查看未来的变更日志。
php bin/console version:unpublished
如果你满意,可以启动自动生成版本的流程。
php bin/console version:release
版本控制需要所有更改都已经被提交。之前的提交信息将自动添加到 CHANGELOG.md 并执行带有新版本号的提交,并创建tag。如果你对当前的变更日志不满意,你可以修改它,并使用 amend
将其添加到发布提交中。
然后推送master和新生成的tag。
不需要为每次更改创建新版本,只需当你打算将更改上传到生产环境时。
如果你已经准备好更改,但想查看发布新版本时的变更日志,可以使用以下命令生成。
php bin/console version:generate
此命令会生成变更日志,但不会提交它或创建带有新版本号的tag。接下来只需撤销对变更日志的更改,你就可以继续开发了。
配置
provider: Git
ticketPatern: 'https://gitlab.com/james.fruhbauer/versioning-bundle/issues/'
template: Normal #[Normal|Simple|Custom]
# if you use custom template set path
# template: Custom
# templatePath: 'MyCustomTemplateBundle/Resources/views/Custom'
groupList:
- { groupName: Release, keywordList: [RELEASE], upgrade: MAJOR, changelog: false }
- { groupName: Features, keywordList: [FEATURE], upgrade: MINOR }
- { groupName: Bugfixes, keywordList: [HOTFIX, FIX, BUG, BUGFIX], upgrade: PATCH }
- { groupName: Refactoring, keywordList: [REFACTORING], upgrade: PATCH }
- { groupName: Documentation, keywordList: [DOCS], upgrade: PATCH }
# custom command for example build CSS from SASS
# placeholder #VERSION# is available with current version
# customCommandList:
# - { name: 'Npm Build', command: 'npm run build-prod --env.template=#TEMPLATE#' --env.version=#VERSION# }
# customParamList:
# - { name: template, placeholder: '#TEMPLATE#', mode: REQUIRED, description: 'Name of template' }