2016-07-28 83 views
1

目前我使用Travis CI来测试Symfony Bundle。 PHPUnit的是由作曲家安装,因为PHPUnit的声明为dev依赖性:如何在Travis CI上缓存phpunit.phar?

{ 
    … 
    "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" 
    }, 
    … 
} 

即使我用特拉维斯CI的缓存每个版本后缓存~/.composer文件夹,安装PHPUnit的与作曲家需要一些时间,因为PHPUnit的必须检查所有安装它们之前的依赖关系。


所以我约使用PHPUnit的的药业版本,可以安装在一个命令思考:

wget https://phar.phpunit.de/phpunit.phar 

但是,如果我用特拉维斯CI此命令,PHPUnit的将被下载一次在每个版本。有没有办法让缓存这个phpunit.phar文件?一种简单的方法可能是将文件放入缓存中,检查该文件的日期并在文件大于1天的情况下下载新版本,但可能有更简单的解决方案。

PHPUnit有--self-update选项,但是它的will be removed in the next major release

回答

0

您可以配置特拉维斯保持建立之间的某些目录(documentation中称为“缓存”)。

只需以下配置添加到您的特拉维斯配置文件和/vendor目录应坚持跨越构建:

cache: 
    directories: 
    - vendor 

你仍然应该包括composer install调用您的构建时composer.json文件更改为更新的依赖关系。要进一步加快composer install进程,您还可以将composer.lock文件添加到版本控制。


另外,当然你也可以使用相同的功能,简单的保持之间架起一个下载phpunit.phar文件。

+0

对不起,我忘记表明我已经在Composer的缓存中使用了Travis CI缓存。 –

+0

哦,我明白了。你为什么不用它来缓存你下载的'phpunit.phar'文件呢? – helmbert

+0

因为这意味着Travis会在每个版本下载2.9 Mb'phpunit.phar'文件。 –