目前我使用Travis CI来测试Symfony Bundle。 PHPUnit由Composer安装,因为PHPUnit被声明为dev
依赖项:
{
…
"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
文件夹,使用Composer安装PHPUnit也需要一些时间,因为PHPUnit必须在安装之前检查所有依赖项。
所以我考虑使用可以安装在一个命令中的使用PHPUnit的PHAR版本:
wget https://phar.phpunit.de/phpunit.phar
但是如果我在Travis CI上使用此命令,PHPUnit将在每个构建中下载一次。有没有办法缓存此phpunit.phar
文件?一种简单的方法可能是将文件放入缓存中,检查此文件的日期并在文件超过1天时下载新版本,但可能有一个更简单的解决方案。
PHPUnit有--self-update
选项,但它will be removed in the next major release。
答案 0 :(得分:1)
您可以将Travis配置为在构建之间保留某些目录(在documentation中称为“缓存”)。
只需将以下配置添加到Travis配置文件中,/vendor
目录应在整个版本中保留:
cache:
directories:
- vendor
当composer install
文件发生更改时,您仍应在构建中包含composer.json
调用以更新依赖关系。为了进一步加快composer install
进程,您还可以将composer.lock
文件添加到版本控制中。
或者,您当然可以使用相同的功能在构建之间简单地保留已下载的phpunit.phar
文件。