Travis-CI:如何在构建之间缓存作曲家可执行文件?

Travis-CI: how to cache composer executable between builds?

在每个 travis 构建中,composer self-update 是 运行。它会在每次构建时得到更新。是否可以像我们通过

使用 vendor 目录那样缓存作曲家可执行文件
cache:
  directories:
    - vendor
    - $HOME/.composer/cache

我考虑过缓存整个 /home/travis/.phpenv/versions/5.5/bin/composer 但我觉得这是不对的,因为这个文件夹的内容可能会更改而不通知缓存系统有关更改(例如当 travis 更新 php 版本时).

有什么建议(当然,自定义作曲家除外)?

我建议不要更新 composer 本身,而是让 travis 处理它。 (每 30/60 天自动更新一次)

我还可以推荐使用新的容器化基础架构来加速运行并允许缓存...

language: php

sudo: false

cache:
  directories:
        - $HOME/.composer/cache

php:
  - 5.5
  - 5.6
  - 7
  - hhvm

install:
  - composer install

script: vendor/bin/phpunit

sudo: false语句表示使用容器。 cache: 语句确保作曲家正确缓存。

如果您真的想要缓存 composer 二进制文件:

language: php

php:
  - 5.5
  - 5.6
  - 7
  - hhvm

cache:
  directories:
    - $HOME/.composer/cache

install:
  - travis_retry composer self-update && composer --version
  - export PATH="$HOME/.composer/vendor/bin:$PATH"
  - travis_retry composer install --prefer-dist --no-interaction

script: vendor/bin/phpunit

另外请注意,如果测试 HHVM 并且您需要设置日期时间,请查看 https://github.com/travis-ci/travis-ci/issues/2523。我解决这个问题的方法是在我的 test 目录中添加一个带有日期时间的 .ini 文件,并将其设置在所有测试运行程序的正确文件夹中。这是在 install: 步中添加的:

  - mkdir -p /home/travis/.phpenv/versions/$(phpenv version-name)/etc/conf.d
  - phpenv config-add test/phpconfig.ini

无论如何,比您要求的信息多了一点,但我希望这对正在寻找 composer/travis/stuff 的人有所帮助 :)