如何在Travis CI上缓存phpunit.phar?

如何在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

目前,我使用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-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 Mb
phpunit.phar
文件。您可以先检查它是否已经存在:
[-e cached/phpunit.phar]| | wget-O cached/phpunit.pharhttps://phar.phpunit.de/phpunit.phar
如何确保下载最新版本的PHPUnit?