Система непрерывной интеграции для кода Python - PullRequest
54 голосов
/ 02 августа 2008

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

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

Ответы [ 7 ]

28 голосов
/ 02 августа 2008

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

28 голосов
/ 02 августа 2008

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

Гудзон обнимает Питона

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

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

19 голосов
/ 03 августа 2008

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

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

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

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

17 голосов
/ 15 сентября 2008

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

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

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

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

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

7 голосов
/ 16 сентября 2008

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

6 голосов
/ 23 сентября 2008

TeamCity имеет немного Python интеграция .

Но TeamCity это:

  • не с открытым исходным кодом
  • не маленький, а скорее многофункциональный
  • бесплатно для малых и средних команд.
5 голосов
/ 03 февраля 2012

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

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

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

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

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

...