Непрерывная система интеграции для кодовой базы Python
Я начинаю работу над хобби-проектом с кодовой базой python и хотел бы настроить какую-то форму непрерывной интеграции (т.е. запускать батарею тестовых случаев каждый раз, когда регистрируется регистрация и отправляется nag e-mails ответственных лиц, когда тесты не выполняются), аналогичные CruiseControl или TeamCity.
Я понимаю, что могу сделать это с помощью перехватов в большинстве VCS, но это требует, чтобы тесты выполнялись на той же машине, что и сервер управления версиями, который не так изящен, как хотелось бы. Есть ли у кого-нибудь предложения для небольшой, удобной для пользователя системы непрерывной интеграции с открытым исходным кодом, подходящей для кодовой базы Python?
Ответы
Ответ 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 (по крайней мере, при использовании официальной версии)