Simple PHP library to detect in what continuous integration server is current script being run and to provide unified interface for accessing the build properties.
The detection is based on environment variables injected to the build environment by each of continuous integration server. However, these variables are named differently in each CI. This library contains adapter for each supported CI server which handles these differences so you don't have to and you can make your scripts (and especially CLI tools) portable for multiple build environments.
These CI servers are currently recognized:
If your favorite CI server is missing, feel free to send a pull-request!
If you want to use CI Detector as a standalone CLI command (ie. without using inside code of PHP project), see ci-detector-standalone repository, where you can download CI Detector as a standalone PHAR file with simple command line interface.
Install using Composer:
$ composer require ondram/ci-detector
Ci-detector requires PHP 7.1+, but you need compatibility with PHP <7.1, you can still use old ci-detector version 2.x.
<?php
$ciDetector = new \OndraM\CiDetector\CiDetector();
if ($ciDetector->isCiDetected()) { // Make sure we are on CI environment
$ci = $ciDetector->detect(); // Returns class implementing CiInterface or throws CiNotDetectedException
// Example output when run in Travis:
echo $ci->getCiName(); // "Travis CI"
echo $ci->getBuildNumber(); // "35.1"
echo $ci->getBuildUrl(); // "https://travis-ci.org/OndraM/ci-detector/jobs/148395137"
echo $ci->getGitCommit(); // "fad3f7bdbf3515d1e9285b8aa80feeff74507bdd"
echo $ci->getGitBranch(); // "feature/foo-bar"
echo $ci->getRepositoryUrl(); // "" (empty string) - unsupported on Travis, will return eg. "ssh://git@gitserver:7999/project/repo.git" on Jenkins etc.)
} else {
echo "CI not detected";
}
Run unit-tests:
vendor/bin/phpunit
Check codestyle:
vendor/bin/php-cs-fixer fix --diff --dry-run # remove the --dry-run option to fix the codestyle