目前我使用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
选项,但它将在下一个主要版本中删除。
您可以将Travis配置为在构建之间保留某些目录(在其文档中称为"缓存")。
只需将以下配置添加到Travis配置文件中,/vendor
目录就可以在构建中持久存在:
cache:
directories:
- vendor
当composer.json
文件发生更改时,您仍然应该在构建中包含一个composer install
调用来更新依赖关系。为了进一步加快composer install
进程,您还可以将composer.lock
文件添加到版本控制中。
或者,您当然可以使用相同的功能在构建之间简单地保留一个下载的phpunit.phar
文件。