Поскольку Travis-CI развивается и расширяет свой набор функций, естественно, он становится более приятным и приятным в использовании. Недавно я прочитал эту статью о "Ускорении сборки". Построение проекта Django, над которым я работаю, занимает ~ 25-30 минут. Почти половина этого времени расходуется на создание виртуальных серверов, то есть на установку требований к проекту. Другая половина времени используется для фактического пробного прогона.
Есть усилия по сокращению времени выполнения тестов. Тем не менее, я задавался вопросом, было ли более быстрое ускорение для захвата путем кэширования или объединения требований проекта. Что касается Plone, похоже, несколько вариантов, поскольку он использует buildout. Я также смотрел WAD. Конечно, при кешировании требований им необходимо будет получить недействительность при обновлении требований.
Кто-нибудь сделал какие-либо улучшения скорости движения Travis для проекта (Django), сократив время настройки?
Обновление. Это теперь первая функция 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
Это ускорит загрузку, но все равно придется скомпилировать и установить все требования!
С годами это стало еще проще. Последний способ:
cache: pip
Что это.
С pip 7:
cache:
directories:
- $HOME/.pip-cache/
install:
- pip install --upgrade pip
- pip install -r requirements.txt --cache-dir $HOME/.pip-cache