Здесь мы делаем что-то близкое к «встроенной» разработке, и я могу сказать вам, что мы экономим:
- номер версии SVN и отметка времени, а также машина, на которой он был построен, и кем (также записаны в двоичные файлы сборки)
- полный журнал сборки, показывающий, была ли это полная / инкрементная сборка, любой интересный вывод (STDERR) о созданных инструментах запекания данных, список скомпилированных файлов и любые предупреждения компилятора (это очень хорошо сжимается, будучи текстом)
- фактические двоичные файлы (для любых конфигураций сборки от 1 до 8)
- файлы, созданные как побочный эффект связывания: командный файл компоновщика, карта адресов и своего рода файл «манифеста», указывающий, что было записано в окончательные двоичные файлы (CRC и размер для каждого), а также база данных отладки (.pdb эквивалент)
Мы также рассылаем заинтересованным пользователям результаты запуска некоторых инструментов над файлами «побочных эффектов». На самом деле мы не архивируем их, поскольку мы можем воспроизвести их позже, но эти отчеты включают:
- общий и дельта размера файловой системы с разбивкой по типу файла и / или каталогу
- общий и дельта размеров раздела кода (.text, .data, .rodata, .bss, .sinit и т. д.)
Когда у нас запущены модульные или функциональные тесты (например, дымовые тесты), эти результаты отображаются в журнале сборки.
Мы еще ничего не выбросили - учитывая, что наши целевые сборки обычно составляют ~ 16 или 32 МБ на конфигурацию, и они довольно сжимаемы.
Мы храним несжатые копии двоичных файлов около 1 недели для облегчения доступа; после этого остается только слегка сжатая версия. Примерно раз в месяц у нас есть сценарий, который извлекает каждый .zip, созданный в процессе сборки, и 7-zip-архивирует результаты сборки за месяц (что позволяет использовать только небольшие различия для каждой сборки).
В среднем в день может быть дюжина или две сборки на проект ... Сервер сборки просыпается каждые 5 минут, чтобы проверить наличие соответствующих различий и сборок. Полный .7z для большого и очень активного проекта в течение одного месяца может составлять 7–10 ГБ, но это, безусловно, доступно.
По большей части таким образом мы смогли все диагностировать. Иногда возникает сбой в системе сборки, и файл на самом деле не является той ревизией, которой должен быть, когда происходит сборка, но обычно в журналах достаточно свидетельств этого. Иногда нам нужно откопать инструмент, который понимает формат отладочной базы данных, и скормить ему несколько адресов для диагностики сбоя (у нас есть автоматические дампы стека, встроенные в продукт). Но обычно вся необходимая информация есть.
Следует упомянуть, что нам еще не пришлось взламывать архивы .7z. Но у нас есть информация, и у меня есть несколько интересных идей о том, как извлечь из нее полезные данные.
person
leander
schedule
20.03.2009