jackmartin/版本

控制你的Laravel应用程序版本

0.4.0 2021-01-20 15:01 UTC

README

控制你的Laravel应用程序版本

Latest Stable Version License Code Quality Build

Coverage StyleCI SensioLabsInsight

描述

此包是一个Laravel (5.5+) 工具包,可帮助您保留和管理应用程序版本,增加版本号(主版本、次版本、修订版本、构建号),并且还可以使用您的最后提交哈希值作为构建号。

此包的最终结果包括:

  • 在页面上打印版本。
  • 在控制台中通过Artisan命令打印。

这些结果的一些用途可以是:

  • 确保回滚成功。
  • 了解更新是否到达了所有服务器。
  • 检查用户是否正在查看应用程序的最新版本。
  • 验证Travis CI是否正在测试应测试的版本。
  • 如果您只是喜欢版本化您的物品,并喜欢在所有页面上查看它们?那也很好。 :)
  • 您的用例是什么? 告诉我们!

功能

通过YAML配置文件轻松控制您的应用程序版本

version: 
    current:
        major: 1
        minor: 0
        patch: 0
        format: '{$major}.{$minor}.{$patch}'
    build:
        mode: number
        number: 701036

使用您的git提交作为您的应用程序构建号

配置它

build:
    mode: git-local

您可能得到以下输出

MyApp version 1.0.0 (build a9c03f)

或仅使用增量构建号

build:
    mode: number
    number: 701036

以获取

MyApp version 1.0.0 (build 701036)

使用Artisan命令轻松增加版本号

$ php artisan version:build

它应该打印新版本号

New build: 701037
MyApp version 1.0.0 (build 701037) 

所有这些都可用

$ php artisan version:major   
$ php artisan version:minor   
$ php artisan version:patch   
$ php artisan version:build   

输出格式高度可配置

您可以配置

format:
  version: "{$major}.{$minor}.{$patch}"
  full: "version {{'format.version'}} (build {$build})"
  compact: "v{{'format.version'}}-{$build}"

这是fullcompact格式的结果

MyApp version 1.0.0 (build 701037)
MyApp v1.0.0-701037

它提供了对动态方法的访问

Version::compact()

如果您创建了一个新的

format:
  awesome: "awesome version {$major}.{$minor}.{$patch}"

它也将是可调用的

Version::awesome()

提供了一个门面

Version::version() // 1.2.25

Version::build() // 703110

Version::major() // 1

Version::minor() // 2

Version::patch() // 25

Version::format('full') // version 1.0.0 (build 703110)

Version::full() // version 1.0.0 (build 703110) -- dynamic method

Version::format('compact') // v.1.0.0-703110

Version::compact() // v.1.0.0-703110 -- dynamic method

实例化它

如果您不想使用门面

dd(
    Version::format()
);

实例化的最佳方式是

简单的PHP对象实例化

$version = new \SyntaxEvolution\Version\Package\Version();

dd(
    $version->format()
);

或从容器中获取已实例化的Version对象

dd(
    app(\SyntaxEvolution\Version\Package\Version::class)->format()
);

但您必须确保您已发布了配置文件

Blade指令也准备好在视图中使用

您可以使用此指令渲染完整的版本格式

@version

或选择格式

@version('full')
@version('compact')

您可以配置指令名称

blade_directive: printversion

然后

@printversion('compact')

Git标签

您可以使用您的git标签作为应用程序版本,您所需做的就是将版本源设置为"git"。

version_source: git

如果您在标签中添加了构建号

$ git tag -a -f v0.1.1.3128

版本将使用它作为您的应用程序构建号

匹配其他版本(git标签)格式

您可能只需要更改git版本匹配器

git:
  ...
  version:
    matcher: "/[V|v]*[ersion]*\\s*\\.*(\\d+)\\.(\\d+)\\.(\\d+)\\.*(\\w*)/"

假设您将发布标记为

2017120299
YYYYMMDD##

您可以将匹配器更改为

git:
  version:
    matcher: "/(\d{4})(\d{2})(\d{2})(?:\d{2})/"

并从格式中删除点

format:
  compact: "v{$major}{$minor}{$patch}-{$build}"

在您的代码中使用当前应用程序版本

这是一个社区示例,说明如何将应用程序版本号发送到Bugsnag进行异常记录

<?php

namespace App\Exceptions;

use SyntaxEvolution\Version\Package\Version;
use Bugsnag\BugsnagLaravel\Facades\Bugsnag;

class Handler extends ExceptionHandler
{
    public function report(Exception $exception)
    {
        if ($this->shouldReport($exception)) {
            Bugsnag::setAppVersion((new Version())->format('version'));
            Bugsnag::notifyException($exception);
        }
    }
}

Artisan命令

这些是您可以使用的命令

version:show

显示当前应用程序版本

$ php artisan version:show
SyntaxEvolution version 1.0.0 (build 701031)

$ php artisan version:show --format=compact
SyntaxEvolution v1.0.0-701031

$ php artisan version:show --format=compact --suppress-app-name
v1.0.0-701031

version:(major|minor|patch|build)

增加版本项

$ php artisan version:minor
New minor version: 5
MyApp version 1.5.0 (build 701045)

version:refresh

清除缓存并刷新版本

$ php artisan version:refresh
Version was refreshed.
SyntaxEvolution version 1.0.0 (build 4f76c)

version:absorb

这需要您使用注解标签。

版本可以将git版本和构建吸收到配置文件中,因此您可以在删除.git文件夹后仍然快速访问版本和构建缓存。您必须在配置文件中配置git_absorb

build:
  #...  
  git_absorb: git-local # "false", "git-local" or "git-remote"

并运行它

$ php artisan version:absorb

实施absorb的常规配置设置是

version_source: config             ## must be set as config
current:
    major: 1                       ## |
    minor: 0                       ## | --> will be changed by absorb
    patch: 0                       ## |
    git_absorb: git-local          ## configure to get from local or remote
build:
    mode: number                   ## must be set as number
    number: f477c8                 ## will be changed by absorb
    git_absorb: git-local          ## configure to get from local or remote 

安装

通过Composer

$ composer require jackmartin/version

然后发布你将需要的配置文件

$ php artisan vendor:publish --provider="SyntaxEvolution\Version\Package\ServiceProvider"

你应该可以在你的视图中使用它了

@version

由于git版本被缓存,你可以通过将刷新命令添加到post-autoload-dump来告诉composer在每次更新或安装时刷新你的版本号

"post-autoload-dump": [
    ...
    "@php artisan version:refresh"
]

(可选)你还可以通过在.git/hooks/post-commit中设置来自动化此过程。一旦你提交,它将自动运行该命令。

#!/bin/sh

php artisan version:refresh

如果你在构建号上使用Git提交,你可能需要将Git仓库添加到你的.env文件中

VERSION_GIT_REMOTE_REPOSITORY=https://github.com/antonioribeiro/version.git

如果你使用git-local,请确保当前文件夹是一个Git仓库

最低要求

  • Laravel 5.5
  • PHP 7.0

测试

$ composer test

故障排除

  • 如果你因为symfony/router(3.3/3.4)或symfony/yaml(3.3/3.4)而无法安装,你可以尝试
rm -rf vendor
rm composer.lock
composer install

许可证

本软件包遵循MIT许可证 - 请参阅LICENSE文件以获取详细信息

贡献

欢迎提交拉取请求和问题。