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

时间:2016-07-28 16:08:54

标签: php phpunit travis-ci phar

目前我使用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

1 个答案:

答案 0 :(得分:1)

您可以将Travis配置为在构建之间保留某些目录(在documentation中称为“缓存”)。

只需将以下配置添加到Travis配置文件中,/vendor目录应在整个版本中保留:

cache:
  directories:
    - vendor

composer install文件发生更改时,您仍应在构建中包含composer.json调用以更新依赖关系。为了进一步加快composer install进程,您还可以将composer.lock文件添加到版本控制中。

或者,您当然可以使用相同的功能在构建之间简单地保留已下载的phpunit.phar文件。