Я ищу других, которые имеют опыт работы с python venv и развертывания приложений через rpm.Мои цели:
- Использовать pip для зависимости от Python
- Использовать venv для разделения сред приложений / отделов
- Использовать rpm для развертывания (требуется нашими внутренними компаниями)аудит и т. д.).
У меня есть сервер сборки (jenkins slave) для каждой архитектуры (читай: distro), на которой мы развертываем.Мой первоначальный (и единственный) план для подчиненного jenkins (сервера сборки) через задание jenkins заключался в следующем:
- Создание venv
- Активация venv
- python setup.py build / install (в спецификации rpm)
- обороты архива как артефакт
- Радуйтесь
Я никогда не переходил к шагу 2 или 3, поэтому я не знаюдраконы там, однако главная проблема приходит с шагом «Создать вен».Поскольку venvs не «перемещаемы» и RPM использует RPM_BUILD_ROOT, который является автономной файловой системой в tmpdir, из которого мы упаковываем, я не могу установить venv в rpm_build_root.Мне пришлось бы установить venv в фактическое местоположение на сервере сборки, которое должно было быть при развертывании (установить rpm).Это не идеально по многим причинам, которые вы можете догадаться (коллизии с другими приложениями, другие вещи, работающие на серверах сборки и т. Д.).
Я не хочу запускать setup.py на моем производственном компьютереи загружать пакеты во время установки.Я хочу убедиться, что все хорошо, чтобы все загрузилось и было упаковано до того, как произойдет развертывание.
Самое близкое, что я нашел, это dh-virtualenv из этого , поэтому вопрос ,Это выглядит многообещающе и из того, что я могу сказать, устанавливается непосредственно в конечный каталог (не временная сборка).Это убирает за собой, но все еще кажется плохой практикой.Есть ли способ лучше?Я что-то пропустил?Кажется, я застрял, делая это в порядке.