2016-07-28 4 views
1

В настоящее время я использую Travis CI для тестирования набора Symfony. PHPUnit устанавливается с помощью Composer, поскольку PHPUnit объявлен как dev зависимости:Как кэшировать phpunit.phar на Travis CI?

{ 
    … 
    "require" : { 
     "php": ">=5.5", 
     "symfony/symfony": "~2.7 || ~3.0" 
    }, 
    "require-dev": { 
     "doctrine/orm": "^2.4.8", 
     "symfony/assetic-bundle": "~2.3", 
     "symfony/monolog-bundle": "~2.4", 
     "doctrine/doctrine-fixtures-bundle": "~2.3", 
     "liip/functional-test-bundle": "~1.4", 
     "phpunit/phpunit": "4.8.* || ~5.1" 
    }, 
    … 
} 

Даже если я использую кэш Travis CI для кэширования папки ~/.composer после каждой сборки, установок PHPUnit с Composer занимает некоторое время, потому что PHPUnit должен проверить все зависимостей перед их установкой.


Так я думал о использовании версии ФАР из PHPUnit, которые могут быть установлены в одной команде:

wget https://phar.phpunit.de/phpunit.phar 

Но если я использую эту команду на Travis CI, PHPUnit будет загружен один раз в каждой сборке. Есть ли способ для кеш этого phpunit.phar файл? Легким способом может быть поместить файл в кеш, проверить дату этого файла и загрузить новую версию, если файл старше 1 дня, но может быть более простое решение.

Существует опция --self-update для PHPUnit, но она will be removed in the next major release.

ответ

0

Вы можете настроить Travis для хранения определенных каталогов между сборками (называемыми «кэшированием» в их documentation).

Просто добавьте следующую конфигурацию в ваш конфигурационный файл Travis и каталог /vendor должны сохраняться через сборки:

cache: 
    directories: 
    - vendor 

Вы должны все еще включать в себя composer install вызов вашей сборки для обновления зависимостей, когда файл composer.json изменен. Чтобы ускорить процесс composer install, вы также можете добавить файл composer.lock в систему контроля версий.


В качестве альтернативы, вы можете, конечно, использовать ту же функцию для просто сохранить загруженный файл phpunit.phar между сборками.

+0

Извините, я забыл указать, что я уже использую кеш Travis CI для кеша композитора. –

+0

О, я вижу. Почему бы вам просто не использовать его для кэширования загруженного файла 'phpunit.phar' тоже? – helmbert

+0

Потому что это означало бы, что Travis загружает файл 2. phpunit.phar на 2.9 Mb в каждой сборке. –