Вопрос или проблема
Контекст
В разработке программного обеспечения мы часто используем конвейер сборки для выполнения ряда проверок предложенного изменения. Проверки обычно включают линтинг, проверку типов и модульные тесты, но могут включать такие вещи, как проверка на изменения контрактов, отчеты о производительности, отчеты по доступности.
Конвейеры сборки не позволят изменению продолжаться, если какая-либо из этих проверок не прошла.
Что я не пытаюсь решить
Инструменты конвейера сборки, такие как BuildKite, Github Actions, Gitlab и т.д., обычно предоставляют панели управления по поведению конвейера, например, количество сборок, процент неудачных и т.д.
Общепринято видеть, что инструменты предоставляют отчеты по конкретному запросу на извлечение. Например, вот PR, в котором есть отчет о времени выполнения тестов.
Что я ищу – агрегированные отчеты по конкретным проблемам
Часто есть определенный вид ошибки, о которой мы хотим быть в курсе. Одна из распространенных – это ненадежные тесты.
Или может быть конкретное правило линтинга, которое мы внедряем, позволяя сборкам проходить, и мы хотим видеть метрику количества случаев этого предупреждения с течением времени, надеясь увидеть его снижение.
Для этого мы хотим, чтобы наши отдельные шаги конвейера сборки предоставляли настраиваемые данные для какого-то агрегатора, а затем запрашивали агрегатор для панелей управления и т.д.
Я осведомлен о том, что инструменты, такие как Buildkite и т.д., могут уже предоставлять такую функциональность, в этом случае то, что я ищу, – это ссылка на их документацию/название концепции в их терминах.
Ответ или решение
Сервисы SASS для агрегации отчетов по проверки в пайплайнах
Введение
В современном программировании использование пайплайнов для сборки и проверки кода стало стандартом. Эти пайплайны выполняют различные проверки изменений, такие как линтинг, проверка типов и модульные тесты, а также другие аспекты, включая проверку контрактов, производительность и доступность. Однако возникает необходимость в инструментах, которые могут агрегировать и анализировать специфические метрики, помогая разработчикам выявлять и устранять систематические проблемы, такие как «плавающие тесты» или накопление предупреждений по линтингам.
Проблематика
На данный момент многие инструменты для автоматизации CI/CD предоставляют различные панели мониторинга и отчеты о состоянии пайплайнов. Тем не менее, они часто не предлагают детализированной информации о специфических ошибках или тенденциях. К примеру, если необходимо мониторить количество плавающих тестов или отслеживать динамику определенных предупреждений в линтинге, стандартные инструменты не всегда обладают необходимыми возможностями. В связи с этим, требуется специализированный сервис для агрегирования данных и построения отчетов.
Решение: Использование SaaS-продуктов
Существует ряд SaaS-продуктов, которые могут помочь в агрегации отчетов и анализе данных по этим метрикам. Рассмотрим несколько примеров:
-
SonarCloud/SonarQube
- Описание: Эти инструменты предназначены для статического анализа кода и могут интегрироваться с различными CI/CD системами. SonarCloud предоставляет мощные панели мониторинга, которые агрегируют данные по качеству кода с различных проектов, включая информацию о линтинге и тестах.
- Функционал: Возможность настраивать конкретные метрики, такие как уровень покрытия тестами или количество предупреждений по специфическим правилам линтинга. Поддержка создания собственных правил и агрегирования данных по ним.
-
Sentry
- Описание: Хотя Sentry в первую очередь предназначен для отслеживания ошибок в производственном окружении, он также позволяет интегрироваться с CI/CD инструментами и собирать информацию о тестах.
- Функционал: Агрегация данных об ошибках, включая информацию о плавающих тестах, с возможностью отслеживания динамики и создания отчетов по конкретным проблемам.
-
Datadog
- Описание: Это облачный инструмент мониторинга, который может интегрироваться с пайплайнами сборки для сбора и анализа данных.
- Функционал: Возможность обеспечения агрегации метрик с различных этапов пайплайнов, создание кастомизированных дашбордов для отслеживания и анализа специфических проблем, таких как плавающие тесты.
Как реализовать агрегацию данных
Для реализации механизма агрегации данных во время выполнения пайплайнов необходимо настроить шаги процессов сборки так, чтобы они передавали данные в выбранный вами сервис. Это может быть реализовано через использование API или специализированных плагинов. Каждый шаг пайплайна должен формировать конфигурируемый payload с данными о результатах проверки.
Заключение
Решение проблемы агрегации отчетов по специфическим ошибкам в пайплайнах требует внедрения специализированного SaaS-продукта, который сможет объединить данные с различных этапов сборки и предоставить удобные дашборды для мониторинга. Сервисы такие, как SonarCloud, Sentry и Datadog, предлагают robust функции для этого. Важно правильно настроить интеграцию с вашим пайплайном и определить ключевые метрики, которые будут интересовать вашу команду для улучшения качества и надежности кода.