Как кэшировать требования для проекта Django на Travis-CI?

16

Поскольку Travis-CI развивается и расширяет свой набор функций, естественно, он становится более приятным и приятным в использовании. Недавно я прочитал эту статью о "Ускорении сборки". Построение проекта Django, над которым я работаю, занимает ~ 25-30 минут. Почти половина этого времени расходуется на создание виртуальных серверов, то есть на установку требований к проекту. Другая половина времени используется для фактического пробного прогона.

Есть усилия по сокращению времени выполнения тестов. Тем не менее, я задавался вопросом, было ли более быстрое ускорение для захвата путем кэширования или объединения требований проекта. Что касается Plone, похоже, несколько вариантов, поскольку он использует buildout. Я также смотрел WAD. Конечно, при кешировании требований им необходимо будет получить недействительность при обновлении требований.

Кто-нибудь сделал какие-либо улучшения скорости движения Travis для проекта (Django), сократив время настройки?

Теги:
requirements.txt
travis-ci

3 ответа

19

Обновление. Это теперь первая функция Travis: http://blog.travis-ci.com/2013-12-05-speed-up-your-builds-cache-your-dependencies/

Я просто играл с этим, и похоже, что вы можете кэшировать виртуальные сайты-пакеты, подобные этому (обновите путь к вашей версии python):

cache:
  directories:
    - /home/travis/virtualenv/python2.7/lib/python2.7/site-packages

Есть небольшая проблема, что он не кэширует каталоги bin или src. Я попытался кэшировать весь каталог virtualenv, но я получаю странные ошибки для зависимостей, установленных через git в каталог src.

У вас все еще остается проблема отмены старых требований. если вы удалите что-то из требований, он будет сохраняться в virtualenv, поэтому вам нужно либо явно удалить его с помощью pip (pip remove foo), либо подождать, пока Travis не создаст API для аннулирования кеша...

Другой вариант - использовать параметр --download-cache для pip, а затем добавить этот каталог в кэш:

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

install:
  - pip install -r requirements.txt --download-cache $HOME/.pip-cache

Это ускорит загрузку, но все равно придется скомпилировать и установить все требования!

  • 0
    Официально эта функция теперь включает API аннулирования about.travis-ci.org/blog/… Тем не менее, они не имеют специфического подхода для кэширования пипсов.
  • 2
    благодарю вас! pip install с --download-cache отлично работает для меня; время сборки ушло с 15м до 3м :)
Показать ещё 3 комментария
8

С годами это стало еще проще. Последний способ:

cache: pip

Что это.

6

С pip 7:

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

install:
  - pip install --upgrade pip
  - pip install -r requirements.txt --cache-dir $HOME/.pip-cache

Ещё вопросы

Сообщество Overcoder
Наверх
Меню