2010-10-14 2 views
2

Я следую контурам решения CI Hudson/питон/virtualenv described at heisel.org, но один шаг это действительно опрелости, и это та часть, где настроено virtualenv, созданное только для CI перспективы:Возможно ли предустановить virtualenv для использования в сборках hudson?

pip install -q -E ./ve -r requirements.pip 
pip install -q -E ./ve -r requirements-test.pip 

Это требует чрезмерного количества времени для запуска, и каждый раз, когда исходный файл изменяется, мы в конечном итоге перезагружаем то, что составляет значительный объем данных.

Возможно ли создать рабочие пространства шаблонов в Хадсоне, чтобы вместо того, чтобы проверять его на голом рабочем пространстве, он проверяется на заранее подготовленный?

ответ

1

Вот несколько вариантов:

  1. Есть архив в вашем репозитории, взрывающийся в virtualenv/пип установки. Вам нужно будет сделать перемещаемую точку virtualenv перемещаемой.

  2. Используйте любой вариант SCM подходит не уничтожить рабочее пространство между сборками (например Использовать обновления SVN, или не проверять Clean Mercurial выстраивает варианта). Затем сохраните команды установки в скрипте сборки, но поместите их в под оператором if, чтобы они выполнялись только (например), если файл .pip_installed отсутствует или задан параметр сборки.

  3. Возможно, вам понадобится плагин Clone Workspace, чтобы сделать то, что вам нужно . Но это альтернативный SCM, который, я предполагаю, вы, вероятно, не хотите , так как Hudson не будет проверять несколько SCM (см. this previous question за некоторые идеи об этом).

Это, вероятно, также является хорошей идеей, чтобы настроить конфигурацию пип, чтобы вытащить из локального кэша пакетов.

pip -f http://localhost/packages/ 
0

Усиление заключается в том, чтобы упаковать virtualenv в архив, названный хешем файла требований. Если файл требований не изменился со времени последней сборки, просто извлеките архив в пустой каталог virtualenv. Если файл требований изменился, архив еще не существует, поэтому вы запускаете установку pip для сборки среды, а затем сохраняете ее в новом архиве.

0

Если вы создаете новый venv для рабочего пространства, вам действительно нужно установить все депики один раз в начале, поэтому последующие сборки выполняются намного быстрее. См. Мое сообщение для сценария, который я написал, чтобы помочь:

"Pretty" Continuous Integration for Python