spinen / laravel-version
辅助工具,用于跟踪您的Laravel应用程序的版本。
Requires
- php: ^8.1
- illuminate/console: ~8|~9|~10|~11
- illuminate/container: ~8|~9|~10|~11
- illuminate/routing: ~8|~9|~10|~11
- illuminate/support: ~8|~9|~10|~11
- illuminate/view: ~8|~9|~10|~11
Requires (Dev)
- laravel/pint: ^1.6
- mikey179/vfsstream: ^1.6.11
- mockery/mockery: ^1.5.1
- phpunit/phpunit: ^9.6.5
- psy/psysh: ^0.11.1
- symfony/var-dumper: ^6.2
This package is auto-updated.
Last update: 2024-09-09 00:48:29 UTC
README
很多时候,了解应用程序的版本非常有用。在 Spinen,我们遵循 语义化版本控制,为我们的应用程序使用 git-flow。我们在项目的根目录中保持一个名为 VERSION
的文件,其中包含当前版本。CI/CD流程修改VERSION
文件以附加有意义的数据。然后在视图中,我们这样显示版本:<meta name="application-version" content="{{ $version }}">
。此外,我们还有一个烟雾测试,它会击中/version
路由,以确保网站正在运行预期的版本。
构建状态
先决条件
除了Laravel >= 8之外,没有其他所需的软件包。
安装
安装版本
$ composer require spinen/laravel-version
该软件包使用Laravel 5的自动注册功能。
版本文件的说明
您需要一个文件,包含应用程序的语义版本。例如...
4.3.6
然后您可以通过手动方式或通过CI/CD管道添加额外的数据,使其类似于以下内容...
4.3.6
feature/some_great_thing
sha:3c40a5b0d0a07973bd117a39b53367c9ff4d4cc0
build:11425
20190220170058+0000
文件行的分解
关于文件的一些说明...
- 我们假设第一行只有
major
.minor
.patch
- 版本之后的第一个非空行将成为
pre_release
- 如果
pre_release
是master
,则将其忽略 - 用作
pre_release
的行之后的所有行都将以一个.
连接起来,形成meta
,因此可以有任意多的行
使用软件包
Spinen\Version\Version
对象加载配置的版本文件,将其解析为对象上的以下公共属性...
您可以将 Spinen\Version\Version
注入到代码中以访问这些属性。对于我们来说,这里有3个主要的软件包使用方式...
- 视图中的变量
/version
路由- 版本命令
视图变量
\Spinen\Version\Version
实例被添加到所有视图中作为 $version
变量。您可以进行如下操作...
- 将版本添加到HTML头部
<meta name="application-version" content="{{ $version }}">
以获取<meta name="application-version" content="4.3.6-feature/some_great_thing+sha:3c40a5b0d0a07973bd117a39b53367c9ff4d4cc0.build:11425.20190220170058+0000">
- 注意:将对象转换为字符串与
$version->semver
相同
- 将版本添加到页面底部
<small class="app_version">{{ $version->version }}</small>
以获取<small class="app_version">4.3.6</small>
路由
访问 /version
将返回版本...
$ curl https:///version 4.3.6-feature/some_great_thing+sha:3c40a5b0d0a07973bd117a39b53367c9ff4d4cc0.build:11425.20190220170058+0000
命令
添加了以下 artisan
命令...
配置
将软件包配置文件发布到 config/version.php
$ php artisan vendor:publish --tag version-config
此文件已完全文档化。您需要修改该文件以满足您的需求。有三个主要配置项...
file
- 包含版本的文件名route
- 显示版本的路由配置view
- 配置视图组合器以将版本添加到视图
修改版本文件的CI示例
我们使用GitLab,因此这里是一个部分示例job
,我们将其放在我们的.gitlab-ci.yml
文件中...
version: stage: build image: php7.2 dependencies: [] script: - echo "" >> VERSION - echo "${CI_COMMIT_REF_NAME}" >> VERSION - echo "sha:${CI_COMMIT_SHA}" >> VERSION - echo "build:${CI_PIPELINE_ID}" >> VERSION - date +"%Y%m%d%k%M%S%z" >> VERSION artifacts: name: "${CI_BUILD_NAME}_${CI_BUILD_REF_NAME}-version" paths: - VERSION expire_in: 3 days