Как кэшировать загруженные пакеты apt-get в travis? - PullRequest
0 голосов
/ 21 сентября 2018

Я использую travis-ci для тестирования своего репозитория github, и я обнаружил, что 3 до 10 минут тратится на загрузку deb пакетов.Они только 127 MB большие.

Я проверил travis-ci / Кэширование зависимостей и каталогов , но apt-get не поддерживается.

Как это сделать?

1 Ответ

0 голосов
/ 21 сентября 2018

Этого можно достичь, кэшируя содержимое в другой папке, доступной для пользователей без полномочий root, и mv all deb под ним в /var/cache/apt/archives/.После установки cp верните их в эту папку.

Примечание:

Я рекомендую вам сделать YOUR_DIR_FOR_DEB_PACKAGES где-нибудь под ~.

# .travis.yml

sudo: required

cache:
  - directories:
    - $YOUR_DIR_FOR_DEB_PACKAGES # This must be accessible for non-root users

addons:
  apt:
    sources:
      # Whatever source you need

# Download the dependencies if it is not cached
# All the "echo" and "ls" in "before_script" can be remove since they are only used for debugging.
before_script:
  - echo "Print content of $YOUR_DIR_FOR_DEB_PACKAGES"
  - ls $YOUR_DIR_FOR_DEB_PACKAGES
  - echo "Check whether apt-get has no cache"
  - ls /var/cache/apt/archives
  -
  - echo "Start loading cache"
  - |
    exist() {
        [ -e "$1" ]
    }
  - |
    if exist ~/$YOUR_DIR_FOR_DEB_PACKAGES/*.deb
    then
        sudo mv ~/$YOUR_DIR_FOR_DEB_PACKAGES/*.deb /var/cache/apt/archives/
        ls /var/cache/apt/archives
    fi
  -
  - echo "Start to install software"
  - sudo apt-get update
  - sudo apt-get install -y --no-install-recommends --no-install-suggests $THE_PACKAGES_REQUIRED
  -
  - echo "Start updating the cache"
  - cp /var/cache/apt/archives/*deb ~/$YOUR_DIR_FOR_DEB_PACKAGES/

script:
  - # Do whatever you want here.
...