Я являюсь членом команды, которая собирается запустить бета-версию веб-сайта на основе Python (в частности, Django) и сопровождающего его набора внутренних инструментов. За последние несколько недель численность самой команды выросла вдвое - с 2 до 4, и мы ожидаем продолжения роста, по крайней мере, в течение следующих нескольких месяцев. Одна проблема, которая начала беспокоить нас, - это заставить всех освоиться с точки зрения настройки их среды разработки, установки всех необходимых яиц и т. Д.
Я ищу способы упростить этот процесс и сделать его менее подверженным ошибкам. И zc.buildout, и virtualenv выглядят так, как будто они являются хорошими инструментами для решения этой проблемы, но оба, кажется, концентрируются в основном на проблемах, связанных с Python. У нас есть пара небольших подпроектов на других языках (в частности, Java и Ruby), а также множество расширений Python, которые должны быть скомпилированы изначально (lxml, драйверы MySQL и т. Д.). Фактически, одним из самых больших тернов с нашей стороны было получение некоторых из этих расширений, скомпилированных с соответствующими версиями разделяемых библиотек, чтобы избежать ошибок segfa, malloc и всех подобных проблем. Это не помогает, что из 4 человек у нас есть 4 различные среды разработки - 1 леопард на ПК, 1 леопард на Intel, 1 Ubuntu и 1 Windows.
В конечном итоге было бы примерно так, как показано в командной строке dos / unix:
$ git clone [URL хранилища]
...
$ python setup-env.py
...
затем делает то, что делает zc.buildout / virtualenv (копирует / символизирует интерпретатор python, обеспечивает чистое место для установки яиц), затем устанавливает все необходимые яйца, включая установку любых собственных зависимых библиотек общего доступа, устанавливает проект ruby, java проект и т. д.
Очевидно, что это будет полезно как для развертывания сред разработки, так и для развертывания на промежуточных / производственных серверах.
В идеале я хотел бы, чтобы инструмент, который выполняет это, был написан на / расширяемом через python, поскольку это (и всегда будет) языком общения нашей команды, но я открыт для решений на других языках.
Итак, мой вопрос: есть ли у кого-нибудь какие-либо предложения по лучшим альтернативам или опыт, которым они могут поделиться, используя одно из этих решений для обработки более крупных или более широких баз установки?