Система непрерывной интеграции для базы кода Python

Я начинаю работать над хобби-проектом с кодовой базой Python, и я хотел бы настроить некоторую форму непрерывной интеграции (т. Е. Запускать батарею тестовых примеров каждый раз, когда выполняется регистрация, и отправка сообщений электронной почты ответственным лиц, когда тесты не проходят) аналогично Круиз-контроль или TeamCity.

Я понимаю, что могу сделать это с помощью хуков в большинстве VCSes, но для этого требуется, чтобы тесты выполнялись на том же компьютере, что и сервер контроля версий, что не так элегантно, как хотелось бы. Есть ли у кого-нибудь предложения по небольшой, удобной для пользователя системе непрерывной интеграции с открытым исходным кодом, подходящей для кодовой базы Python?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
61
0
9 284
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Одна из возможностей - Хадсон. Он написан на Java, но есть интеграция с проектами Python:

Hudson embraces Python

Однако сам я никогда не пробовал.

(Обновлять, сентябрь 2011 г .: После спора по поводу товарного знака Hudson был переименован в Дженкинс.)

@ Джо, хорошая рекомендация. @Matt Не позволяйте тому факту, что Hudson написан на Java, пугает вас, если вы любитель питонов. Его очень просто настроить и запустить. Он интегрируется с pylint и cover.py. Я использую его в своих проектах, и мне он очень нравится. Это намного проще, чем BuildBot. Чтобы настроить и запустить Hudson, это одна команда. java -jar hudson.war Вот лучший пост, который я видел для его настройки: rhonabwy.com/wp/2009/11/04/…

Paul Hildebrandt 02.04.2010 07:32

Hudson, написанный на Java, так же актуален, как и ваш редактор, написанный на C++! Это просто очень хорошо написанный, простой в настройке и в целом полнофункциональный инструмент CI. Python может быть очень хорошо интегрирован, nosetests --with-xunit --with-coverage, pylint с плагинами "Violations" и "Cobertura" для покрытия

dbr 25.01.2011 15:30

@dbr: Не совсем так. Язык, на котором что-то написано, часто влияет на программное обеспечение, с которым оно работает лучше всего ... особенно системы сборки. Когда я посмотрел на Hudson ~ 2 года назад, он хотел, чтобы выходные данные модульного теста были только в формате XML JUnit; мой набор модульных тестов Python этого не делал. Но если бы мой проект был на Java, он бы работал из коробки. В любом случае, похоже, что с тех пор интеграция как в инструментах Hudson, так и в Python прошла долгий путь, и я благодарен за это.

Joe Shaw 04.02.2011 17:31

да, Дженкинс / Хадсон в порядке, очень просто настроить.

Tom Willis 26.09.2011 04:48
Ответ принят как подходящий

Запускаем Buildbot - Trac на работе. Я не использовал его слишком часто, так как моя кодовая база еще не является частью цикла выпуска. Но мы запускаем тесты в разных средах (OSX / Linux / Win), и он отправляет электронные письма - и он написан на Python.

Во-вторых, интеграция Buildbot - Trac. Вы можете найти больше информации об интеграции на Сайт Buildbot. На моей предыдущей работе мы написали и использовали упомянутый плагин (tracbb). Плагин переписывает все URL-адреса Buildbot, чтобы вы могли использовать Buildbot из Trac. (http://example.com/tracbb).

Что действительно хорошо в Buildbot, так это то, что конфигурация написана на Python. Вы можете интегрировать свой собственный код Python прямо в конфигурацию. Также очень легко написать свои собственные BuildSteps для выполнения определенных задач.

Мы использовали BuildSteps, чтобы получить исходный код из SVN, извлечь зависимости, опубликовать результаты тестов в WebDAV и т. д.

Я написал интерфейс X10, чтобы мы могли отправлять сигналы с результатами сборки. Когда сборка не удалась, мы включили красную лавовую лампу. Когда сборка прошла успешно, загорелась зеленая лавовая лампа. Хорошие времена :-)

Мы используем как Buildbot, так и Hudson для разработки Jython. Оба они полезны, но имеют разные сильные и слабые стороны.

Конфигурация Buildbot - это чистый Python и довольно простой, как только вы освоите его (посмотрите документацию API, созданную epydoc для получения самой последней информации). Buildbot упрощает определение задач, не связанных с тестированием, и распространение тестеров. Однако на самом деле в нем нет концепции отдельных тестов, только текстовый, HTML и сводный вывод, поэтому, если вы хотите иметь многоуровневый просматриваемый тестовый вывод и т. д., Вам придется создать его самостоятельно или просто использовать Hudson.

У Hudson есть потрясающая поддержка для перехода от общих результатов к тестовым комплектам и индивидуальным тестам; он также отлично подходит для сравнения результатов тестирования между сборками, но распределенный (главный / подчиненный) материал сравнительно сложнее, потому что вам также нужна среда Java на подчиненных устройствах; кроме того, Hudson менее терпим к нестабильным сетевым соединениям между ведущим и ведомыми устройствами.

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

Вот наши примеры:

извините за это, я этого не утверждаю :-)

Nicholas Riley 26.12.2010 17:40

Мы используем Укушенный, который интегрирован с trac. И он основан на питоне.

В TeamCity есть Python интеграция.

Но TeamCity - это:

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

У меня очень хороший опыт работы с Трэвис-Си для небольших кодовых баз. Основные преимущества:

  • настройка выполняется менее чем на половине экрана файла конфигурации
  • вы можете сделать свою установку или просто использовать бесплатную размещенную версию
  • полуавтоматическая настройка репозиториев github
  • учетная запись на сайте не требуется; войти через github

Некоторые ограничения:

  • Python не поддерживается как язык первого класса (на момент написания; но вы можете использовать pip и apt-get для установки зависимостей python; см. этот учебник)

  • код должен быть размещен на github (по крайней мере, при использовании официальной версии)

Python теперь полностью поддерживается в Travis CI: about.travis-ci.org/blog/…

Alex Dupuy 28.04.2012 16:53

Другие вопросы по теме