bonndan / release-manager

Composer包和项目的语义版本发布管理器。

0.5.6 2014-03-22 20:00 UTC

README

Build Status

Release Manager是一个PHP命令行工具,用于帮助您跟踪发布版本。

  • 它使用您的composer文件来存储和检索信息。
  • 它强制执行[语义版本](http://semver.org)。
  • git flow紧密协作。

screenshot

这是Liip的Relase Management Tool RMT的分支。感谢原始作者为此工具做出的贡献。

与git-flow一起使用

./RMT release
./RMT finish

或进行热修复(基于master分支的补丁版本升级)

./RMT hotfix 
./RMT finish

安装

为了使用RMT,您的项目应使用Composer,因为RMT将以开发依赖项的形式安装。只需进入项目根目录并执行以下命令

php composer.phar require --dev bonndan/release-manager 0.5.*         # lastest stable
# or
php composer.phar require --dev bonndan/release-manager dev-develop    # lastest unstable

然后您必须通过运行以下命令来初始化RMT

php vendor/bonndan/release-manager/command.php init

此命令将在您的composer.json中为您创建一个extra/rmt部分。您应根据需要调整配置。[此项目的composer文件](https://github.com/bonndan/release-manager/blob/master/composer.json)是一个很好的例子。

从那时起,您就可以开始使用它了,只需执行它

./RMT

手动工作流程的使用

使用RMT非常简单,您只需运行以下命令

./RMT release

RMT将执行以下任务

  • 执行先决条件检查
  • 要求用户回答潜在的问题
  • 生成新的版本号
  • 执行预发布操作
  • 持久化新的版本号
  • 执行发布后操作

screenshot

附加命令

release命令是工具的主要行为,但还有一些额外的命令可用

  • current将显示您项目的当前版本号
  • changes将显示将包含在下一个发布中的最后更改
  • init在您的composer.json文件中创建一个配置部分

配置

所有RMT配置都必须在composer.json中完成。您可以选择定义一个要执行的动作列表,以及在发布新版本之前或之后执行的动作,以及您想存储版本的地方(在更改日志文件中,作为VCS标签等)。文件分为5个根元素

  • vcs:您使用的VCS类型,可以是gitsvnnone
  • prerequisites:在启动发布过程之前必须匹配的先决条件列表
  • preReleaseActions:在发布过程之前将执行的动作列表
  • versionPersister:用于存储版本的持久化器
  • postReleaseActions:在发布后要执行的动作列表

此配置的所有条目都按相同的方式工作:您必须指定要处理动作的类,或者为Release Manager提供的类提供缩写。

语义版本生成器

Release Manager只允许不带前缀的语义版本。参见(语义版本化)[http://semver.org]。发布版本可以通过以下方式增加

  • 主要
  • 次要
  • 补丁
  • 构建号

版本持久化器

该类负责保存/检索版本号

  • composer:使用composer文件中的版本(默认且推荐)
  • vcs-tag:将版本保存为VCS标签
  • changelog:将版本保存到变更日志文件中

先决条件操作

先决条件操作在交互部分之前执行。

  • working-copy-check:在发布前检查您没有任何VCS本地更改
  • display-last-changes:在发布前显示您的最后更改

操作

操作可用于发布前或发布后部分。

  • execute:通过system()调用执行任何脚本。返回值大于零将引发异常。
  • changelog-update:更新变更日志文件
  • vcs-commit:处理VCS提交
  • vcs-tag:标记最新提交
  • vcs-publish:发布更改(提交和标签)
  • composer-update:更新composer文件中的版本号

配置示例

大多数情况下,您可以直接选择下面的示例,并根据您的需求进行修改。

发布管理器的配置说明

{
    "rmt": {
         "vcs": "git",
         "prerequisites": [
            "working-copy-check",
            "display-last-changes"
         ],
         "preReleaseActions": [
            {
               "name": "execute",
               "script": "phpunit test"
            },
            {
               "name": "version-stamp",
               "const": "RMT_VERSION"
            },
            {
               "name": "changelog-update"
            },
            {
               "name": "changelog-render"
            }
         ],
         "postReleaseActions": [
            "vcs-commit"
         ]
      }
}
  • Git是版本控制系统
  • 在发布前,会检查工作副本是否干净,并显示最后更改。
  • 版本戳(自动生成的PHP文件)和变更日志都会更新为新版本。
  • 执行PHPUnit(通用调用),如果失败则停止发布。
  • 此处未配置:composer版本持久化器更新composer.json文件。
  • 发布后,所有更改都会被提交。

自动推送

{
    /* ... */
    "postReleaseActions": [
       "vcs-commit",
       "vcs-publish"
    ],
}

无VCS,仅变更日志更新器

{
    "versionPersister": "changelog"
}

贡献

如果您想帮助,提交您的一个动作脚本或仅报告一个错误:请访问项目页面: https://github.com/bonndan/release-manager

要求

PHP 5.3 Composer

作者

  • Laurent Prodon Liip AG
  • David Jeanmonod Liip AG
  • Daniel Pozzi

许可

RMT根据MIT许可证授权 - 有关详细信息,请参阅LICENSE文件。