Вопрос

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

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

Это было полезно?

Решение

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

Другие советы

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

Хадсон поддерживает Python

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

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

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

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

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

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

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

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

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

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

Вот наши экземпляры:

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

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

Но TeamCity — это:

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top