【问题标题】:How to cache phpunit.phar on Travis CI?如何在 Travis CI 上缓存 phpunit.phar?
【发布时间】:2016-07-30 02:55:20
【问题描述】:

目前我使用 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 必须在安装之前检查所有依赖项。


所以我在考虑使用可以在一个命令中安装的 PHAR 版本的 PHPUnit

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

但是如果我在 Travis CI 上使用这个命令,PHPUnit 将在每个构建中下载一次。有没有办法缓存这个phpunit.phar 文件?一种简单的方法可能是将文件放入缓存中,检查此文件的日期,如果文件早于 1 天,则下载新版本,但可能有更简单的解决方案。

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

【问题讨论】:

    标签: php phpunit travis-ci phar


    【解决方案1】:

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

    只需将以下配置添加到您的 Travis 配置文件中,/vendor 目录应该在构建中保持不变:

    cache:
      directories:
        - vendor
    

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


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

    【讨论】:

    • 对不起,我忘了说明我已经使用 Travis CI 缓存作为 Composer 的缓存了。
    • 哦,我明白了。你为什么不也用它来缓存你下载的phpunit.phar文件呢?
    • 因为这意味着 Travis 在每次构建时都会下载 2.9 Mb phpunit.phar 文件。
    • 你可以先检查它是否已经存在:[ -e cached/phpunit.phar ] || wget -O cached/phpunit.phar https://phar.phpunit.de/phpunit.phar
    • 如何确定会下载最新版本的 PHPUnit?
    猜你喜欢
    • 2023-04-07
    • 1970-01-01
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    • 2018-02-10
    相关资源
    最近更新 更多