Store and use build time information. Useful for automated builds where information like the application version needs to be retrieved at build time, e.g. from a Git tag.
- Create build information file
- Store information like version, build number, build time etc.
- Read build information in your application and easily use it
The easiest way to install buildinfo is by using composer.
With the BuildInfo library (buildinfo), the buildinfo parameters created with buildinfo-create can be read and used in the actual application.
$> composer require fostam/buildinfo
With the creation tool (buildinfo-create), the buildinfo parameter file is created while the application is built. This package is only required during build phase, not in the final application.
$> composer require fostam/buildinfo-create
After installation, the build time tool can be called from the following location:
$> vendor/bin/buildinfo
Create build info file during the build phase for bundling it into the release (using buildinfo-create):
buildinfo create buildinfo.php --set-version 2.1.0 --set-commit d921970aadf03b3cf0e71becdaab3147ba71cdef
Reading build info file from the application (using buildinfo):
$buildInfo = BuildInfo::fromFile('buildinfo.php');
echo "my application version: " . $buildInfo->getVersion();
To create a build info file, pass the desired filename to the tool along with the build information you want to store.
The file location is relative to the current working directory, unless you give an absolute path.
Currently, two file types are supported, PHP and JSON. PHP is faster to read and cachable, whereas JSON is useful if the build info needs to be processed from outside PHP, too (e.g. JavaScript).
The file type is specified by the file extension. As you can give multiple build info targets, you can let both a PHP and JSON file be created.
Example:
buildinfo create dist/buildinfo.php dist/buildinfo.json --set-version 2.1.0
There are a couple of predefined build information parameters:
--set-name my-application-name
--set-time 2019-07-23T15:34:12Z
--set-version 2.1.0
--set-build-number 3541
--set-branch master
--set-commit d921970aadf03b3cf0e71becdaab3147ba71cdef
NOTE: if the time parameter is omitted, it is automatically set to a string of the current time in the RFC 3339 format.
Additionally, arbitrary custom parameters can be given using the --set
option:
--set author=john.doe@example.com
--set "comment=this is the final release"
The predefined build info parameters can be retrieved with the following methods:
use Fostam\Buildinfo;
$buildInfo = BuildInfo::fromFile('buildinfo.json');
echo $buildInfo->getName();
echo $buildInfo->getTime();
echo $buildInfo->getVersion();
echo $buildInfo->getBuildNumber();
echo $buildInfo->getBranch();
echo $buildInfo->getCommit();
The custom parameters can be retrieved with a generic get()
method:
echo $buildInfo->get('author');
echo $buildInfo->get('comment');
For convenience, the build time can be also retrieved as DateTime
object:
$dt = $buildInfo->getTimeAsDateTime();
echo $dt->format(DateTime::RFC3339);