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


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

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

7   51   2008-08-02 22:43:54

7 ответов:

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

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

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

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

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

во-вторых интеграция 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 и довольно проста, как только вы получите повесить его (посмотрите на epydoc сгенерированных API документы для самой последней информации). Buildbot упрощает определение задач, не связанных с тестированием, и распределение тестеров. Однако он действительно не имеет понятия об отдельных тестах, просто текстовых, HTML и сводных выходных данных, поэтому, если вы хотите иметь многоуровневый просматриваемый тестовый вывод и т. д. вам придется построить его самостоятельно или просто использовать Hudson.

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

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

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

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

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

но TeamCity-это:

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

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

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

ограничения:

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

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