Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Gradle build-scan на коленке

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers. →

Gradle build-scan на коленке

Разбираю, как мы упростили поиск ошибок в своих CI-сборках. Вы узнаете, как мы применяем продуктовый подход в решении проблем и немного о том, как работаем с Gradle.

Доклад будет полезен тимлидам в больших командах, разработчикам, которые настраивают CI/CD и разработчикам, которые решают любого рода проблемы.

Avatar for Sergey Boishtyan

Sergey Boishtyan

March 16, 2021

More Decks by Sergey Boishtyan

Other Decks in Programming

Transcript

  1. Польза Сэкономите время на разборе ошибок в CI Узнаете, как

    мы применяем продуктовый подход Узнаете, как мы работаем с Gradle 6
  2. План • Проблема • Поиск решений • Прототип • Версия

    1.0 • Отдаем пользователям • Было/Стало 7
  3. Падение сборки Ищем причину • Открыть упавшую сборку • Найти

    причину падения • Посмотреть логи • Смотреть логи долго 9
  4. Impact Влияние на конкретного человека • Как это улучшит опыт,

    конкретного пользователя • Сильно - 3 • Средне - 2 • Минимально - 1 24
  5. Confidence Уверенность в своей оценке • Какие факты и данные

    подтверждают ваши оценки • Полностью уверены - 100% • Есть чуйка - 1% 25
  6. Reach Охват пользователей • Падает ~ 31 сборка в день

    • В ~ 15 PR = 15 пользователей • Всего 30 разработчиков • Reach = 15/30 = 0.5 29
  7. Интервью Советы • Не спрашивайте про будущее или прошлое •

    Узнайте, как решают проблему • В идеале, понаблюдайте со стороны за действиями 32
  8. Confidence Уверенность в своей оценке • Опросы • Интервью •

    Метрики • Обращения пользователей • Confidence = У нас есть данные = 90% 34
  9. Варианты • Gradle build scan • Другие Gradle plugin •

    Teamcity Plugin • Написать с нуля 40
  10. 42

  11. Gradle build scan • Много лишних действий: ссылка, почта •

    Ошибки разбросаны по разным вкладкам • На крупных проектах иногда не грузится • Дорогой: API в платной версии 44
  12. Teamcity Plugin • Нет опыта • Данные доступны только на

    этапе сборки • Не хотим парсить логи 46
  13. Требования • Видим все ошибки • Ошибки в одном месте

    • Разработчики могут быстро прочесть и разобраться • Результат доступен в машинно-читаемом виде 50 Прототип • Видим все ошибки • Ошибки в одном месте • Разработчики могут быстро прочесть и разобраться • Результат доступен в машинно-читаемом виде
  14. Какие бывают ошибки • Ошибки компиляции • Ошибки генерации кода

    для Dagger • Упали тесты • Упали проверки линтера • Ошибки конфигурации 52
  15. Пишем прототип • Нужен Android/Gradle проект • Подключаем наш Gradle

    plugin • Делаем в проекте ошибку • Запускаем Gradle task • Проверяем результат 53
  16. Пишем прототип С помощью TestProjectGenerator • Генерируем нужный проект •

    Запускаем в нем Gradle task • Проверяем результат 58
  17. Версия 1.0 Требования 66 • Видим все ошибки • Ошибки

    в одном месте • Разработчики могут быстро прочесть и разобраться • Результат доступен в машинно-читаемом виде
  18. Видим все ошибки Проблемы • Gradle task пишут ошибки в

    логи • Gradle task пишут ошибки в файлы 67
  19. Интервью Советы • Не спрашивайте про будущее или прошлое •

    Узнайте, как решают проблему • В идеале, понаблюдайте со стороны за действиями 69
  20. Интервью Результаты • Обычного текста не хватает • Нужны цвета

    • Разные размеры текста • Кликабельные ссылки 70
  21. Отдаем пользователям Результаты интервью • Об упавших сборках узнают в

    Slack • TeamCity сложный • Не хочется заходить в него лишний раз 76
  22. Отдаем пользователям Итоги • Присылаем в Slack уведомление об упавшей

    сборке • Добавили в него все нужные ссылки 78