Сведения о вопросе

MAT

16:03, 1st July, 2020

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

Просмотров: 603   Ответов: 7

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

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



  Сведения об ответе

PHPH

18:03, 1st July, 2020

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

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

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

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


  Сведения об ответе

screen

18:03, 1st July, 2020

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


  Сведения об ответе

qwerty101

18:03, 1st July, 2020

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

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

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

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


  Сведения об ответе

crush

18:03, 1st July, 2020

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

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

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

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

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


  Сведения об ответе

ASSembler

18:03, 1st July, 2020

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


  Сведения об ответе

dumai

18:03, 1st July, 2020

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

Но TeamCity есть:

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


  Сведения об ответе

Chhiki

18:03, 1st July, 2020

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

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

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

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

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться