第九天/版本

控制您的 Laravel 应用版本。从 https://github.com/antonioribeiro/version 分支而来

维护者

详细信息

github.com/ninthday/version

来源

安装: 138

依赖: 0

建议者: 0

安全: 0

星级: 0

关注者: 0

分支: 103

v1.5.1 2024-02-25 04:29 UTC

This package is auto-updated.

Last update: 2024-09-25 06:01:13 UTC


README

控制您的 Laravel 应用版本

Latest Stable Version License Code Quality Build

Coverage StyleCI Downloads

描述

此包是一个 Laravel (5.5+) 工具包,可以帮助您保留和管理您的应用程序版本,增加版本号(主版本、次版本、补丁版本、提交),还可以使用您的最新提交哈希值。

此包的最终结果包括

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

完全兼容 SemVer

此包能够解析 SemVer 版本

v2.0.1-alpha.1227

并将其转换为可用于

label: v
major: 2
minor: 0
patch: 1
prerelease: alpha
buildmetadata: 1227
commit: 49ffe2

您可以使用格式化函数重新编写并显示它,例如

MyApp version 2.0.1 - alpha 1227 (commit 49ffe2)

这些结果的一些用例可能包括

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

特性

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

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

使用您的 Git 提交作为您的应用程序提交哈希/编号

配置它

commit:
    mode: git-local

您可能得到这样的输出

MyApp version 1.0.0 (commit a9c03f)

或者只使用递增的提交哈希/编号

commit:
    mode: number
    number: 701036

以获得

MyApp version 1.0.0 (commit 701036)

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

php artisan version:commit

这将打印新版本号

New commit: 701037
MyApp version 1.0.0 (commit 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'}} (commit {$commit})"
  compact: "v{{'format.version'}}-{$commit}"

以下是 fullcompact 格式的结果

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

它为您提供对动态方法的访问

Version::compact()

如果您创建了一个新的

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

它也将可调用

Version::awesome()

有一个 Facade 可用

Version::version() // 1.2.25

Version::commit() // 703110

Version::major() // 1

Version::minor() // 2

Version::patch() // 25

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

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

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

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

实例化它

如果您不想使用 Facade

dd(
    Version::format()
);

实例化它的最佳方式是

简单的 PHP 对象实例化

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

dd(
    $version->format()
);

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

dd(
    app(\Ninthday\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}-{$commit}"

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

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

<?php

namespace App\Exceptions;

use Ninthday\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);
        }
    }
}

提交时间戳

此包还允许您吸收最后一个提交的时间戳或将当前日期存储到 version.yml 文件中。这是配置文件中的格式

timestamp:
  year:
  month:
  day:
  hour:
  minute:
  second:
  timezone:

要吸收,只需配置 mode: absorb 然后执行

php artisan version:absorb

但您也可以设置 mode: increment 然后执行

php artisan version:timestamp

将当前日期和时间存储到配置文件中

$ php artisan version:minor
New timestamp: 2019-09-16 18:23:03
MyApp version 2.3.2 (commit 49ffe2)

然后您可以在您的应用程序中使用它

Version::format('timestamp-full')

Artisan 命令

这些是您可用的命令

version:show

显示当前应用程序版本

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

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

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

version:absorb

您需要设置 mode: absorb

版本可以吸收 git 版本和提交到配置文件,因此您可以删除 .git 文件夹,同时仍然保留您的版本和提交以便快速访问。您必须在配置文件中配置 git_absorb

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

并运行它

$ php artisan version: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
commit:
    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 

version:(major|minor|patch|commit)

您需要设置 mode: increment

增加版本项

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

正则表达式匹配器

这是当前用于拆分版本字符串的正则表达式

^(?P<label>[v|V]*[er]*[sion]*)[\.|\s]*(?P<major>0|[1-9]\d*)\.(?P<minor>0|[1-9]\d*)\.(?P<patch>0|[1-9]\d*)(?:-(?P<prerelease>(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?P<buildmetadata>[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$

您可以在网上测试它: https://regex101.com/r/Ly7O1x/42

安装

通过 Composer

$ composer require ninthday/version

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

$ php artisan vendor:publish --provider="Ninthday\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

作者

Antonio Carlos Ribeiro

许可证

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

贡献

欢迎拉取请求和问题。