在Travis CI上缓存单个文件

时间:2016-02-04 14:06:38

标签: docker travis-ci

在我的travis构建中,我需要先下载一个大的.tar.gz文件。

.tar.gz永远不会改变,所以缓存它是一个好主意。

我在Dockerfile中下载的.tar.gz

RUN curl ftp://mycompanyftp.com/foo/bar/mylargefile.tar.gz -o /tmp/mylarge.tar.gz

随着docker容器内部文件的构建。

如何缓存此文件?

PS :也可以在before_install上下载该文件,并使用docker ADD将其放入Docker容器中。

1 个答案:

答案 0 :(得分:0)

这是不可能的,只要您在dockerfile中有此命令即可。

相反,我建议您将此命令放在.travis.yml文件中,并作为预构建活动的一部分下载该文件:

before_install: |
  if ! [ -f ./src/mylarge.tar.gz ]; then
    curl ftp://mycompanyftp.com/foo/bar/mylargefile.tar.gz -o ./src/mylarge.tar.gz;
  fi

install: |
  ./scripts/build.sh;

script: |
  ./scripts/test-integration.sh;

cache:
  directories:
    - $TRAVIS_BUILD_DIR/src/

after_success: |
  ./scripts/deploy.sh;

如您所见,before_install部分将下载文件(如果尚不存在)。 cache部分将告诉Travis保留./src/目录,并在下一个版本的开始时将其还原,因此不会再次下载。

在您的dockerfile中,现在要执行的操作(而不是下载)是将本地文件复制到容器中:

COPY ./src/mylargefile.tar.gz /tmp/mylargefile.tar.gz

您可以在docs page上阅读有关Travis CI缓存的更多信息。