
это сервис для автоматического тестирования кода, он интегрирован с GitHub поддерживает множество языков и библиотек, в данном случае нас интересует PHP и тесты на PHPUnit. Это очень удобно когда вы разрабатываете открытую библиотеку, остальным нет необходимости запускать тесты локально, все будет доступно на travis.
Мы рассмотрим, как добавить приложение на travis-ci.org на примере 4devs/blog.
Самое главное что у вас должен быть код покрытый тестами и они должны все быть работоспособны. Надо зарегистрироваться на travis-ci.org, сделать это можно только с помощью GitHub. Travis с ним очень плотно интегрирован и использовать его с другими подобными сервисами не получится.
создаем файл .travis.yml в корне проекта с таким содержимым, также есть и другие примеры.
language: php php: - 5.4 - 5.5 matrix: allow_failures: - php: 5.5 env: global: matrix: - REQUIRE=no-dev - REQUIRE=dev before_script: - mkdir app/cache - chmod 777 app/cache - cp app/config/parameters.yml.desc app/config/parameters.yml - echo "extension = mongo.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini - composer self-update - composer --${REQUIRE} --prefer-source install - app/console doctrine:mongodb:fixtures:load services: mongodb script: phpunit -c app/
директива language говорит от том какой язык используем в нашем случае это php.
php это поддерживаемые версии в нашем случае мы может только от 5.4 и выше, тесты будут выполнены под всеми указанными версиями отдельно. возможен такой вариант
php: - 5.3 - 5.4 - 5.5
но в нашем случае тесты на версии 5.3 точно не прошли, так как есть не совместимые изменения.
matrix - дает возможность выполнять тесты под разными конфигурациями а директива allow_failures в данном случае означает что тесты с версией php5.5 могут не пройти, от них не зависит статус всех тестов
env наше рабочее окружение, я использовал тут matrix, чтобы тесты выполнялись при разных установках composer, глобальных переменных у меня нет, можно через пробел писать несколько переменных к примеру - REQUIRE=no-dev USE_NETWORK=true
подробнее можно узнать на travis. global имеет такой же формат как и matrix, только использоваться будут во всех build.
before_script - все действия построчно что нам необходимо делать перед тестами, здесь будет и установка всего приложения и очистка кеша если такое необходимо, переменные указанные нами ранее можно использовать, у нас есть - echo "extension = mongo.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
установка дополнительной библиотеки php, так как не все они включены по умолчанию, список расширений которые включены можно узнать здесь
script: phpunit -c app/ это соответственно запуск самих тестов у travis, соответственно PHPUnit там установлен, запуск считается от корня проекта. У меня PHPUnit установлен на рабочей машине глобально, поэтому я также запускаю их у себя из корня проекта.
Выводы.
В данном примере будет сделано всего 4 сборки(php 5.4 и dev, php 5.4 и prod, php 5.5 и dev, php 5.5 и prod) и все они протестированы, но тесты версии php 5.5 то есть сборка дев версии и прод не будут влиять на общий результат.
Данный сервис полезен прежде всего тем кто будет использовать ваши библиотеки. Вы не всегда можете протестить под разным окружением, и можно к примеру подготовиться для будущего перехода на скажем php 5.5.
Пример вполне рабочий, можно результат посмотреть . Это краткое введение, для более детального изучения всех его возможностей воспользуйтесь документацией.