spinen/laravel-version

辅助工具,用于跟踪您的Laravel应用程序的版本。

1.7.0 2024-04-08 23:54 UTC

README

Latest Stable Version Latest Unstable Version Total Downloads License

很多时候,了解应用程序的版本非常有用。在 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_releasemaster,则将其忽略
  • 用作 pre_release 的行之后的所有行都将以一个 . 连接起来,形成 meta,因此可以有任意多的行

使用软件包

Spinen\Version\Version 对象加载配置的版本文件,将其解析为对象上的以下公共属性...

您可以将 Spinen\Version\Version 注入到代码中以访问这些属性。对于我们来说,这里有3个主要的软件包使用方式...

  1. 视图中的变量
  2. /version 路由
  3. 版本命令

视图变量

\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

此文件已完全文档化。您需要修改该文件以满足您的需求。有三个主要配置项...

  1. file - 包含版本的文件名
  2. route - 显示版本的路由配置
  3. 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