Сборка, непрерывная интеграция, развертывание в проектах на python?

Вопрос такой, какие инструменты принято и удобно использовать для сборки проектов на python, какие CI предпочитает сообщество python разработчиков, что используется для развертывания кода на серверах.
Больше интересен опыт web проектов, но буду рад примерам из других областей.
  • Вопрос задан
  • 4852 просмотра
Пригласить эксперта
Ответы на вопрос 6
bobry
@bobry
CI для питона тема больная, ибо все более менее серьзеные решения написаны на Java и ориентированы соответственно на Java-разработку. Мы используем Bamboo, просто потому что он интегрируется с JIRA, но ничего готового (например установки зависимостей через pip) у него для питона нет.

Что касается развертывания проектов, то тут есть варианты, в зависимости от ваших религиозных убеждений:
1. <3 Ruby? — chef или puppet — бонусом получите пачку готовых решений на все случаи жизни, например создание баз в постгресе или установка зависимостей через apt
2. Fabric

Для последнего товарищи из ffunction пилят некий аналог chef'a под названием cuisine, хотя до удобства использования там еще ой как далеко.
Ответ написан
Комментировать
@Fak3
Для развертывания своих web-проектов на сервер используют virtualenv и pip. Зависимости обычно перечислены в файлике в формате pip.
при этом разворачиваие проекта сводится к набору команд:
svn\git clone to <proj_dir>
virtualenv <env_dir>
source <env_dir>/bin/activate
pip install -r <proj_dir>/requrements.pip

Код, запускающий проект на боевом сервере должен при этом учитывать наличие виртуального окружения. Если использовать апач и wsgi — тут описано, как должен выглядеть скрипт

Зачем все эти пляски с virtualenv?
Это все нужно, чтобы на одном и том же сервере спокойно работали несколько проектов с различными версиями зависимых программ. (например у каждого проекта может быть своя версия django)
Ответ написан
@immaculate
Программист-путешественник
Для «сборки» использую buildout. По сравнению с virtualenv приходится меньше действий делать руками, все более-менее стандартизировано.

Для CI пока не использую ничего. :( Запускаю тесты руками перед push'ем в репозиторий.
Ответ написан
Комментировать
@Ghostwriter
hg -> project tree with a solid YAML-based configuration -> python-doit tasks -> nose tests -> packaging (python-doit) -> fabric deployment -> version update && data migration (python-doit).
Ответ написан
Комментировать
Vas3K
@Vas3K
В качестве CVS использую git, для быстрого развертывания на боевой сервер — небольшой скрипт с вызовом rsync. Вроде вся магия.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы