Непрерывная система интеграции для кодовой базы Python - программирование
Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

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

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

Ответ 3

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

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

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

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

Ответ 4

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

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

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

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

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

Ответ 5

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

Ответ 6

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

Но TeamCity:

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

Ответ 7

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

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

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

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

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