Download the PHP package spinen/laravel-version without Composer
On this page you can find all versions of the php package spinen/laravel-version. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package laravel-version
SPINEN's Laravel Version
There are many times that it is nice to know the version of your application. At Spinen, we adhere to Semantic Versioning for our applications using git-flow. We keep a file in the root of our projects named VERSION
with the current version. The CI/CD process modifies the VERSION
file to append meaningful data. Then in the views we display the version like this <meta name="application-version" content="{{ $version }}">
. Additionally, we have a smokescreen test to hit a /version
route to make sure that the expected version of the site is running.
Build Status
Branch | Status | Coverage | Code Quality |
---|---|---|---|
Develop | |||
Master |
Prerequisite
As side from Laravel >= 8, there are no packages that are required.
Install
Install Version:
The package uses the auto registration feature of Laravel 5.
Description of version file
You need a file, with the Semantic Version of your application. For example...
Then you can add additional data either manually or via your CI/CD pipeline to be similar to this...
Breakdown of the line of the file
Line | Content | Source | Purpose |
---|---|---|---|
1 | 4.3.6 | Original content in the VERSION file |
Split on . to get major , minor , patch |
2 | "\n" | (Optional) New line | Readability |
3 | feature/some_great_thing | Name of branch | Becomes the pre_release |
4 | sha:3c40a5b0d0a07973bd117a39b53367c9ff4d4cc0 | Git commit SHA | Part of meta |
5 | build:11425 | Build number | Part of meta |
6 | 20190220170058+0000 | Datetime stamp of build | Part of meta |
Some notes about the file...
- We assume that the first line is only
major
.minor
.patch
- The first non-empty line after the version will become the
pre_release
- If
pre_release
ismaster
, then it gets ignored - All of the lines after the line being used as the
pre_release
get concatenated together with a.
to become themeta
, so there can be as many lines as you would like
Using the package
The Spinen\Version\Version
object loads the configured version file to parse the file into the following public properties on the object...
Property | Example |
---|---|
semver | 4.3.6-feature/some_great_thing+sha:3c40a5b0d0a07973bd117a39b53367c9ff4d4cc0.build:11425.20190220170058+0000 |
version | 4.3.6 |
major | 4 |
minor | 3 |
patch | 6 |
pre_release | feature/some_great_thing |
meta | sha:3c40a5b0d0a07973bd117a39b53367c9ff4d4cc0.build:11425.20190220170058+0000 |
You can inject Spinen\Version\Version
into your code to gain access to the properties. For our use, here are 3 main uses of the package...
$version
variable in views/version
routeversion
commands
Variable in views
An instance of \Spinen\Version\Version
is added to to all views as the $version
variable. You can do things like...
- Add version to HTML Header
<meta name="application-version" content="{{ $version }}">
to get<meta name="application-version" content="4.3.6-feature/some_great_thing+sha:3c40a5b0d0a07973bd117a39b53367c9ff4d4cc0.build:11425.20190220170058+0000">
- NOTE: Casting object to string is the same as
$version->semver
- Add version to footer of page
<small class="app_version">{{ $version->version }}</small>
to get<small class="app_version">4.3.6</small>
Route
Visiting /version
will return the version...
Commands
The following artisan
commands are added...
Command | Description |
---|---|
version | Display full version of the application. |
version:major | Display major version of the application. |
version:meta | Display meta version of the application. |
version:minor | Display minor version of the application. |
version:patch | Display patch version of the application. |
version:pre_release | Display pre_release version of the application. |
version:semver | Display semver version of the application. |
Configuration
Publish the package config file to config/version.php
:
This file is fully documented. You will need to make the changes to that file to suit your needs. There are 3 main configuration items...
file
- Name of the file that has the versionroute
- Configuration of the route to display the versionview
- Configuration of the view composer to add the version to the views
Example CI to modify version file
We use GitLab, so here is a partial example job
that we have in our .gitlab-ci.yml
...
All versions of laravel-version with dependencies
illuminate/console Version ~8|~9|~10|~11
illuminate/container Version ~8|~9|~10|~11
illuminate/routing Version ~8|~9|~10|~11
illuminate/support Version ~8|~9|~10|~11
illuminate/view Version ~8|~9|~10|~11