【问题标题】:Caching a single file on Travis CI在 Travis CI 上缓存单个文件
【发布时间】:2019-08-05 21:31:00
【问题描述】:

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

这个.tar.gz 永远不会改变,所以最好把它缓存起来。

.tar.gz 在我的 Dockerfile 中下载:

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

这样,docker 容器就会在里面构建文件。

如何缓存这个文件?

PS:也可以在before_install上下载文件,使用docker ADD放到Docker容器中。

【问题讨论】:

标签: docker travis-ci


【解决方案1】:

只要您的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 缓存的更多信息。

【讨论】:

    猜你喜欢
    • 2018-11-02
    • 2023-04-07
    • 1970-01-01
    • 2016-02-07
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    • 2013-10-25
    相关资源
    最近更新 更多