imshashank/changelog-builder

PHP的ChangelogBuilder自动化

1.0.0 2017-09-04 19:11 UTC

This package is not auto-updated.

Last update: 2024-09-29 03:58:08 UTC


README

Build Status codecov Latest Stable Version Total Downloads License

理念

我们相信每个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 添加拼写和格式检查器