Travis CI

Travis CI is a continuous integration platform for GitHub. If you run your PHPUnit tests on Travis, read on to learn more about how to configure it.

First, you need to store the Blackfire client credentials so that Travis has access to them when running Blackfire related tests. By convention, store them in a .blackfire.travis.ini file that you won't commit in your repository:

1
2
3
4
5
6
7
8
9
; .blackfire.travis.ini
[blackfire]

server-id=BLACKFIRE_SERVER_ID
server-token=BLACKFIRE_SERVER_TOKEN
client-id=BLACKFIRE_CLIENT_ID
client-token=BLACKFIRE_CLIENT_TOKEN
endpoint=https://blackfire.io/
collector=https://blackfire.io/

Then, encrypt the file and commit the encrypted file (.blackfire.travis.ini.enc) to the GitHub repository (replace organization/project with your GitHub repository name):

1
travis encrypt-file .blackfire.travis.ini -r organization/project

Caution

Note that Travis does not allow the decryption of encrypted files on GitHub forks, which means that pull requests tests won't have access to the Blackfire configuration unless they come from the main repository.

Finally, update your .travis.yml file to install Blackfire and run the agent before running the tests according to the following template:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
language: php

matrix:
    include:
        - php: 5.5
        - php: 5.6
        - php: 5.6
          env: BLACKFIRE=on

sudo: false

cache:
    - $HOME/.composer/cache/files

before_install:
    - |
        if [[ "$BLACKFIRE" = "on" ]]; then
            openssl aes-256-cbc -K $encrypted_16ab3ffdcd52_key -iv $encrypted_16ab3ffdcd52_iv -in .blackfire.travis.ini.enc -out ~/.blackfire.ini -d
            curl -L https://blackfire.io/api/v1/releases/agent/linux/amd64 | tar zxpf -
            chmod 755 agent && ./agent --config=~/.blackfire.ini --socket=unix:///tmp/blackfire.sock &
        fi

install:
    - travis_retry composer install

before_script:
    - phpenv config-rm xdebug.ini || true
    - |
        if [[ "$BLACKFIRE" = "on" ]]; then
            curl -L https://blackfire.io/api/v1/releases/probe/php/linux/amd64/$(php -r "echo PHP_MAJOR_VERSION . PHP_MINOR_VERSION;")-zts | tar zxpf -
            echo "extension=$(pwd)/$(ls blackfire-*.so | tr -d '[[:space:]]')" > ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/blackfire.ini
            echo "blackfire.agent_socket=unix:///tmp/blackfire.sock" >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/blackfire.ini
        fi

script:
    - phpunit

Tip

Please update $encrypted_16ab3ffdcd52_key and $encrypted_16ab3ffdcd52_iv with the results of travis encrypt-file.

Tip

XDebug is enabled by default on Travis. To get more accurate results with Blackfire, we highly recommend to disable XDebug by adding - phpenv config-rm xdebug.ini || true like done in the before_script section of the .travis.yml file above.