特拉维斯没有缓存目录

时间:2015-12-26 08:07:45

标签: docker travis-ci

我有一个描述要缓存的目录的.travis.yml文件,但是当我检查travis中的缓存下拉列表时,它告诉我什么都没有。我只想尝试缓存我的作曲家供应商文件夹。下面是我的.travis.yml文件:

sudo: required

language: php

php:
  - 7.0

services:
  - docker

before_install:
  - docker-compose up -d

install: composer install
cache:
  directories:
    - root/vendor

script:
  - bundle exec rake phpcs
  - bundle exec rake phpunit:run
  - bundle exec rake ci:behat

这是我的项目结构(或重要的文件夹/文件):

  |-- .travis.yml
  |-- root
    |-- vendor

有关为何会出现这种情况的任何建议吗?

2 个答案:

答案 0 :(得分:1)

旧版本的Composer(pre alpha1)使用$HOME/.composer/cache/files进行缓存,新版本使用$HOME/.cache/composer/files

设置其中两个是为了兼容性。

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

Travis CI构建日志将打印出以下内容:

Setting up build cache

$ export CASHER_DIR=$HOME/.casher

$ Installing caching utilities                        0.05s
                                                      0.00s
attempting to download cache archive                  0.47s
fetching master/cache-linux-precise-xxx--xxx-xxx.tgz
found cache
                                                      0.00s
adding /home/travis/.cache/composer/files to cache  
adding /home/travis/.composer/cache/files to cache    1.28s

答案 1 :(得分:0)

为了缓存与composer一起安装的依赖项,您需要像这样指定缓存:

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

它不是缓存的vendor目录,而是composer自己的缓存。

但是,您还应该从dist安装以保持缓存小:

install:
    - composer install --prefer-dist 

供参考,请参阅http://blog.wyrihaximus.net/2015/07/composer-cache-on-travis/