matthiasmullie / ci-sniffer
Detects which CI environment the code is run and how to fetch details about the code being tested.
Requires
- php: ^5.3|^7.0
Requires (Dev)
- fabpot/php-cs-fixer: ^1.0
- phpunit/phpunit: ^4.8|^5.0
README
Travis, is that you?
All CI providers set some environment variables to let you know who they are and some additional info, but there's little consistency between how and what they expose. This will figure out what environment you're in and how to access some (sometimes hard to get) data in there, so you don't have to.
Supported CI providers
Example usage
$factory = new \MatthiasMullie\CI\Factory(); $provider = $factory->getCurrent(); // outputs 'travis', 'circle', ..., depending on what CI server the code is run echo $provider->getProvider(); // e.g. 'travis' // outputs data about the thing being tested echo $provider->getRepo(); // e.g. 'https://github.com/matthiasmullie/ci-sniffer.git' echo $provider->getSlug(); // e.g. 'matthiasmullie/ci-sniffer' echo $provider->getBranch(); // e.g. 'master' (or '', when testing PR) echo $provider->getPullRequest(); // e.g. '1' (or '', when not testing PR) echo $provider->getCommit(); // e.g. '01081a9c908717bf315f992b814a36c7c9ba7e65' echo $provider->getPreviousCommit(); // e.g. '45da9806d50c98f9c88dc0049303cf039b93a95b' echo $provider->getAuthor(); // e.g. 'Matthias Mullie' echo $provider->getAuthorEmail(); // e.g. 'ci-sniffer@mullie.eu' echo $provider->getTimestamp(); // e.g. '2016-02-17T18:36:49+01:00' echo $provider->getBuild(); // e.g. '62.1'
Or execute the binary (bin/ci-sniffer
) to get all info in JSON format. E.g.:
{ "provider":"travis", "repo":"https:\/\/github.com\/matthiasmullie\/ci-sniffer.git", "slug":"matthiasmullie\/ci-sniffer", "branch":"master", "pr":"", "commit":"01081a9c908717bf315f992b814a36c7c9ba7e65", "previous-commit":"45da9806d50c98f9c88dc0049303cf039b93a95b", "author":"Matthias Mullie", "author-email":"ci-sniffer@mullie.eu", "timestamp":"2016-02-17T18:36:49+01:00", "build":"62.1" }
Installation
Simply add a dependency on matthiasmullie/ci-sniffer to your composer.json file if you use Composer to manage the dependencies of your project:
composer require matthiasmullie/ci-sniffer
Although it's recommended to use Composer, you can actually include these files anyway you want.
License
ci-sniffer is MIT licensed.