Extract build & environment details from just about any CI server
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin
src
tests
.gitattributes
.gitignore
.travis.yml
CHANGELOG.md
CONTRIBUTING.md
LICENSE
README.md
appveyor.yml
circle.yml
composer.json
makefile
phpunit.xml.dist
shippable.yml
wercker.yml

README.md

CI sniffer

Code quality Latest version Downloads total License

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

Provider Status
Appveyor
Circle CI
Codeship
Drone
Jenkins Supported!
Shippable
Snap CI
Travis CI
Wercker

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.