Можно ли предварительно создать virtualenv для использования в сборках hudson? - PullRequest
2 голосов
/ 15 октября 2010

Я следую плану CI-решения hudson / python / virtualenv , описанному на сайте heisel.org , но один из этапов этого действительно раздражает, и это та часть, где virtualenv, созданный только дляНастройка CI настроена:

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

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

Можно ли создать шаблонные рабочие пространства в Hudson, чтобы вместо выгрузки в пустое рабочее пространство оно выписывалось в предварительно подготовленное?

Ответы [ 3 ]

1 голос
/ 15 октября 2010

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

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

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

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

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

pip -f http://localhost/packages/
0 голосов
/ 04 мая 2011

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

"Довольно" Непрерывная интеграция для Python

0 голосов
/ 27 января 2011

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

...