如何在Travis CI上缓存phpunit.phar?
目前,我使用Travis CI来测试Symfony捆绑包。PHPUnit由Composer安装,因为PHPUnit被声明为如何在Travis CI上缓存phpunit.phar?,php,phpunit,travis-ci,phar,Php,Phpunit,Travis Ci,Phar,目前,我使用Travis CI来测试Symfony捆绑包。PHPUnit由Composer安装,因为PHPUnit被声明为dev依赖项: { … "require" : { "php": ">=5.5", "symfony/symfony": "~2.7 || ~3.0" }, "require-dev": { "doctrine/orm": "^2.4.8", "symfony/assetic
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安装
调用,以更新依赖项。要进一步加快composer安装
过程,您还可以将composer.lock
文件添加到版本控制中
或者,您当然可以使用相同的功能在构建之间简单地保存下载的
phpunit.phar
文件。对不起,我忘了指出我已经将Travis CI缓存用于Composer的缓存。哦,我明白了。为什么不使用它来缓存下载的phpunit.phar
文件呢?因为这意味着Travis会在每次构建时下载2.9 Mbphpunit.phar
文件。您可以先检查它是否已经存在:[-e cached/phpunit.phar]| | wget-O cached/phpunit.pharhttps://phar.phpunit.de/phpunit.phar
如何确保下载最新版本的PHPUnit?