imshashank / changelog-builder
PHP的ChangelogBuilder自动化
Requires
- php: >=5.5
Requires (Dev)
- phpunit/phpunit: ^4.8.35|^5.4.0
This package is not auto-updated.
Last update: 2024-09-29 03:58:08 UTC
README
理念
我们相信每个Pull Request都必须伴随着一个CHANGELOG.md的条目。一个最新的变更日志可以帮助跟踪哪些更改被合并到给定版本中。它还给了贡献者应有的份额,并允许他们跟踪他们的更改被合并到哪个版本中。
Changelog Builder会自动处理所有的变更日志条目。每个Pull Request都必须包含一个作为请求一部分的变更日志JSON blob。系统还会根据在给定的变更日志JSON blob中定义的更改类型来计算包的下一个版本。
这个更新简化了为每个Pull Request添加到CHANGELOG.md文件的发布说明的过程。作为发布一部分的每个合并的Pull Request都会导致CHANGELOG.md文件中有一个新的条目。该条目描述了更改并提供TAG号和发布日期。
依赖项
chag用于更新CHANGELOG.md中的变更日志版本
使用以下方式安装chag
curl -s https://raw.githubusercontent.com/mtdowling/chag/master/install.sh | bash
使用composer安装
将以下内容添加到您的composer文件中,然后运行composer install
{
"imshashank/changelog-builder": "*"
}
使用Changelog
在.changes/nextrelease/文件夹中创建一个新的摘要。json blob的名称应该在该文件夹中是唯一的。要创建一个新的变更日志,只需运行以下命令。
<?php
require('vendor/autoload.php');
use Changelog\ChangelogBuilder;
date_default_timezone_set('America/Los_Angeles');
$params = [];
$options = getopt('v');
$params['verbose'] = isset($option['v']) ? $option['v'] : true;
$params['prefix'] = 'ChangelogBuilder';
$changelogBuilder = new ChangelogBuilder($params);
## Build the Changelog File
$tag = $changelogBuilder->buildChangelog();
## Tags the git repository with the generated tag
shell_exec('chag update '. $tag);
## Cleans the nextrelease folder
$changelogBuilder->cleanNextReleaseFolder();
运行测试
运行以下命令以运行测试。
make test
以下是一个示例变更日志blob。
[
{
"type" : "major|feature|enhancement|bugfix",
"category" : "Target of Update",
"description": "English language simple description of your update."
}
]
每个变更日志blob都需要定义“type”、“category”和“description”字段。category字段解释了更改关联的服务。对于与任何服务无关的发布更改,category字段留为空字符串。description字段应包含一个或两个句子来详细说明更改。
“type”字段描述了所提议更改的范围。此字段有助于Changelog Builder决定是否需要增加小版本。type字段分配以下值之一
- major:发布新版本的仓库。这将增加仓库的
major version。 - feature:对发布的重大更改,将导致小版本增加。功能将打开新的用例或显著改进现有功能。更新将导致小版本增加。示例:新服务。
- enhancement:对代码的小更新。这不应该导致任何代码损坏,并且应该只增强发布的功能。更新将导致补丁版本更新。示例:文档更新。
- bugfix:修复了导致某些不期望行为的代码。更新将导致补丁版本更新。将在下一个版本中包含在变更日志blob中的更改必须放在.changes/nextrelease文件夹中。变更日志blob文件的名称必须在该文件夹中是唯一的。一个好的做法是为与请求相关的变更日志blob文件提供一个描述性的名称。
在每个版本中,构建器会查看.changes/nextrelease文件夹,并将所有JSON blob合并成一个单独的JSON文档。然后,构建器根据完整的JSON文档计算下一个版本号。
示例
当前发布版本:1.2.3 变更日志blob文件1:update-client.json
[
{
"type" : "enhancement",
"category" : "tests",
"description": "Adds support for new feature in test"
}
]
变更日志blob文件2: documentation-update.json
[
{
"type" : "enhancement",
"category" : "Client",
"description": "Update documentation for operation foo bar in Client"
}
]
变更日志blob文件3: repo-bugfix.json
[
{
"type" : "bugfix",
"category" : "",
"description": "Fixes a typo in Client"
}
]
合并的JSON文档: .changes/1.2.4.json 下一个发布版本:1.2.4
[
{
"type": "enhancement",
"category": "tests",
"description": "Adds support for new feature in test"
},
{
"type": "enhancement",
"category": "Client",
"description": "Update documentation for operation foo bar in Client"
},
{
"type": "bugfix",
"category": "",
"description": "Fixes a typo in Client"
}
]
将在 .changes 文件夹中创建一个名为 VERSION_NUMBER.json 的新文件,其中包含变更日志的 JSON blob 内容。您可以在此处查看之前的变更日志 JSON blob。如果需要,我们可以使用 .changes 文件夹中的 JSON 文档重新构建 CHANGELOG.md 文件。
发布成功后,变更日志条目将被写入 CHANGELOG.md 文件的顶部。然后使用 chag 命令标记发布并对添加的版本说明进行标签,标记为当前版本号。
未来工作
- 添加命令
make change以触发下一个版本的变更日志构建器 - 为
ChangelogBuilder添加拼写和格式检查器