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

Vla*_*sny 5 php travis-ci composer-php

在每个travis构建中,composer self-update运行.它会在每次构建时更新.是否可以缓存作曲家可执行文件,就像我们使用vendordir via一样

cache:
  directories:
    - vendor
    - $HOME/.composer/cache
Run Code Online (Sandbox Code Playgroud)

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

任何建议(当然除了自定义作曲家)?

Gek*_*kie 6

我建议不要更新作曲家本身,但让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
Run Code Online (Sandbox Code Playgroud)

该sudo: false声明表明使用容器.该cache:语句确保作曲家正确缓存.

如果你真的想要缓存作曲家二进制文件:

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
Run Code Online (Sandbox Code Playgroud)

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

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

无论如何,比你要求的信息多一点,但我希望这有助于寻找作曲家/特拉维斯/东西的人:)