7

У моей команды есть цель минимизировать время, в течение которого наша сборка нарушена.Круиз-контроль. NET time build тратит в неудавшемся состоянии

Мы используем CruiseControl.NET для непрерывной интеграции. Я хотел бы узнать, как лучше подойти к ответу на следующий вопрос:

«В последнем {timespan}, сколько времени прошло {проект-имя} в разбитом состоянии?"

Например: «В течение последних 1 месяца, сколько времени у нас было потрачено в разбитом состоянии?»

Есть ли какие-либо дополнительные возможности CruiseControl.NET, которые облегчили бы предоставление этой информации в каком-то типе отчета или где-нибудь в панели управления?

В качестве альтернативы, как бы вы подошли к разбору файлов артефакта xml, чтобы получить эту информацию?

+0

«У моей команды есть цель свести к минимуму время, в течение которого наша сборка нарушена». Зачем вам это нужно? Просьба описать сценарий, когда вы можете использовать эту информацию. Если у вас 10 часов в разбитом состоянии или 3 дня, что вам это даст? – Restuta

+0

Restuta: Для нашей команды сломанная сборка представляет собой ошибку. У нас есть набор автоматизированных тестов на разных уровнях нашей системы. Когда один из этих тестов выходит из строя из-за изменения кода, это означает, что мы добавили ошибку. Ошибки недопустимы, и мы хотели бы обеспечить их фиксацию в качестве приоритетного. Наличие статистики - это всего лишь средство, позволяющее количественно оценивать нашу работу, чтобы соответствовать нашей цели быстро находить ошибки и исправлять ошибки. Кроме того, мы используем CruiseControl.NET для развертывания нашего сайта-разработчика, поэтому, пока сборка нарушена, новые изменения кода не будут отражаться на нашем сайте-разработчике. Мы хотели бы обновить наш сайт. – bhazzard

+0

Разбитое количество построений - это ИМХО гораздо лучше, чем время, проведенное в этом состоянии. – skolima

ответ

1

Имея очень быстрый взгляд на документы CC, я полагаю, что если бы вы писали свою собственную панель управления круиз-контролем, вы могли бы использовать RSS-канал для результатов сборки, анализировать во все времена даты и состояния успеха/отказа до ваш порог, затем суммируйте итоги.

Как для отображения его в приборную панель, я думаю, круиз-контроль имеет архитектуру плагинов, которые могут помочь http://cruisecontrol.sourceforge.net/main/plugins.html

+0

Я имею в виду специально CruiseControl.NET. Знаете ли вы, что какая-либо из этой документации CruiseControl также применима к CruiseControl.NET? – bhazzard

2

Я вижу, по крайней мере, два способа подойти к этому:

  1. Вы пишете внешний инструмент который анализирует файлы журнала XML CC.NET для проекта (по умолчанию хранится в подкаталоге buildlogs), вычисляет статистику и записывает HTML-отчет. Это, вероятно, проще сделать, но он не будет напрямую интегрирован с CC.NET.
  2. Для этого необходимо написать плагин CC.NET. В этом случае вам нужно будет немного расследовать. Я предполагаю, что отправной точкой будет просмотр исходного кода какого-либо существующего подключаемого модуля.

Вот некоторые ссылки о плагинах CCNET:

0

Так что мое окончательное решение не было идеальным, но это было легко сделать, и это работает:

У меня был CC.NET, отправляющий электронные письма сборки на адрес электронной почты (мы назовем его [email protected]_statistics.com). Затем я использую ruby-скрипт, чтобы получать электронные письма через imap и обрабатывать их, чтобы определить время сбоя сборки.

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

+0

Обновление: это оказалось ужасным решением. : P – bhazzard

0

Мне нравится cc.net, но в этом случае TeamCity просто делает это за вас. У него много других отличных статистических данных. Это бесплатно для менее чем 20 проектов.

+0

Команда City выглядит довольно аккуратно. Из любопытства, как ответить на этот вопрос, используя TeamCity? – bhazzard

+0

@bhazzard - Team City показывает статистику для каждой конфигурации сборки, которая показывает время, чтобы зафиксировать сборку за день, неделю, месяц, квартал, год или все время. их документы показывают пример страницы статистики http://confluence.jetbrains.net/display/TCD5/Statistics. Он также имеет спокойный api, который вы могли бы использовать для запроса. Не могу сказать, что я еще пробовал метод запроса. Я просто смотрю на график. –