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

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

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

7 ОТВЕТОВ
РЕШЕНИЕ

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

28
14.05.2018 15:19:44

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

Хадсон обнимает Питона

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

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

28
28.01.2013 03:54:17
@ Джо, хорошая рекомендация. @ Matt Не позволяйте факту, что Hudson, написанный на Java, вас напугать, если вы парень с питоном. Это очень просто для установки и запуска. Он интегрируется с Pylint и cover.py. У меня это работает на моих проектах, и мне это нравится. Это намного проще, чем BuildBot. Чтобы настроить его и запустить Hudson, это одна команда. java -jar hudson.war Вот лучший пост, который я видел для его настройки: rhonabwy.com/wp/2009/11/04/…
Paul Hildebrandt 2.04.2010 03:32:02
Хадсон, написанный на Java, так же важен, как и ваш редактор, который вы пишете на C ++! Это просто очень хорошо написанный, простой в установке и, как правило, полнофункциональный инструмент CI. Python может быть очень хорошо интегрированы, nosetests --with-xunit --with-coverage, pylint с «нарушения» плагинов и «Cobertura» для покрытия
dbr 25.01.2011 12:30:26
@dbr: не совсем верно. Язык, на котором написано что-то, часто влияет на программное обеспечение, с которым он работает лучше всего, особенно на системы сборки. Когда я смотрел на Гудзона ~ 2 года назад, он хотел выводить результаты модульного теста только в формате XML JUnit; мой набор тестовых модулей Python этого не делал. Но если бы мой проект был на Java, он бы работал из коробки. В любом случае, похоже, с тех пор интеграция прошла долгий путь и в инструментах Hudson, и в Python, и я благодарен за это.
Joe Shaw 4.02.2011 14:31:10
да, Дженкинс / Хадсон в порядке, очень легко настроить.
Tom Willis 26.09.2011 00:48:28

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

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

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

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

19
3.08.2008 12:09:18

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

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

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

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

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

17
26.12.2010 14:40:28
извините за это, я не поддерживаю это :-)
Nicholas Riley 26.12.2010 14:40:46

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

7
16.09.2008 16:51:46

TeamCity имеет некоторую интеграцию с Python .

Но TeamCity это:

  • не с открытым исходным кодом
  • не маленький, а скорее многофункциональный
  • бесплатно для малых и средних команд.
6
22.09.2008 21:18:15

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

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

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

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

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

5
2.02.2012 21:42:23
Python теперь полностью поддерживается в Travis CI: about.travis-ci.org/blog/…
Alex Dupuy 28.04.2012 12:53:37