Система непрерывной интеграции для базы кода Python
-
08-06-2019 - |
Вопрос
Я начинаю работать над хобби-проектом с Питон кодовой базы, и я хотел бы настроить некоторую форму непрерывной интеграции (т. е.запуск набора тестовых случаев каждый раз при проверке и отправка электронных писем ответственным лицам в случае неудачи тестов) аналогично Круиз-контроль или TeamCity.
Я понимаю, что в большинстве случаев я мог бы сделать это с помощью крючков. Системы управления виртуальными системами, но для этого необходимо, чтобы тесты запускались на той же машине, что и сервер контроля версий, что не так элегантно, как хотелось бы.Есть ли у кого-нибудь предложения по созданию небольшой, удобной для пользователя системы непрерывной интеграции с открытым исходным кодом, подходящей для Питон кодовая база?
Решение
Мы бегаем Строительныйбот - Трек на работе.Я не использовал его слишком часто, поскольку моя кодовая база еще не является частью цикла выпуска.Но мы запускаем тесты в разных средах (OSX/Linux/Win), и он отправляет электронные письма — и он написан на Python.
Другие советы
Один из вариантов — Хадсон.Он написан на Java, но есть интеграция с проектами 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 (по крайней мере, при использовании официальной версии)