Интеграции

GitHub и SLAtech Vantage: коммиты и упавшие запуски

Изменившийся код, сломанная сборка и токен, срок действия которого подходит к концу.

SLAtech Vantage забирает из GitHub две вещи: коммиты репозитория, которые привязываются к проекту, и упавшие запуски GitHub Actions, которые попадают в поток ошибок. Интеграция работает только на чтение и использует персональный токен доступа. Если токен fine-grained, SLAtech Vantage знает срок его действия и предупреждает за две недели.

Что забирается из каждого коммита

Коммиты забираются каждый час, и только новые: коммит не меняется, поэтому уже сохранённый повторно не забирается. Для каждого коммита хранятся:

  • идентификатор (sha), сообщение, автор и дата;
  • список изменённых файлов с числом добавленных и удалённых строк;
  • само изменение в каждом файле, если GitHub его отдаёт. Если изменение слишком большое, GitHub его не отдаёт, и тогда его нет.

Коммит привязан к проекту и репозиторию, а не к конкретной задаче. К проекту можно подключить несколько репозиториев, например фронтенд и бэкенд.

Что коммиты делают внутри SLAtech Vantage

Два применения, и оба экономят время на поиск:

  • Рядом с ошибкой. Когда по стеку ошибки удаётся определить класс, в котором она произошла, экран ошибки показывает последние коммиты, затронувшие файл этого класса. Ответ на вопрос "что там недавно менялось" находится рядом с ошибкой.
  • В базе знаний. Сообщения коммитов и их файлы попадают в поиск, поэтому об изменении, описанном по-английски, можно спросить на иврите. Перед отправкой на перевод личные идентификаторы в тексте маскируются.

Сопоставление по имени класса грубое: два одноимённых класса в разных местах могут показать посторонний коммит.

Упавшие запуски GitHub Actions

Это отдельная интеграция, не связанная с коммитами, и ей нужен токен с правом чтения Actions. Забираются только запуски, которые завершились ошибкой, отменой или превышением времени. Успешный запуск не сохраняется, а идущий ждёт своего итога.

  • Каждый такой запуск попадает в поток ошибок проекта, рядом с ошибками сервера.
  • Группировка идёт по репозиторию, имени сценария, итогу и ветке. "Deploy упал четырнадцатый раз за неделю" выглядит как одна группа со счётчиком, а не как четырнадцать строк.
  • Запуск, отменённый вручную, записывается как шум, а не как ошибка: его остановили намеренно.

Что видит клиент

Клиент не видит ни списка коммитов, ни потока ошибок. В портале у него одна плитка: сколько групп настоящих ошибок активно сейчас, или что всё в порядке.

На вопрос, который клиент задаёт в чате портала, может прийти ответ, опирающийся на сообщение коммита его проекта, но без ссылки на репозиторий.

Упавший запуск CI тоже не показывается ему отдельной строкой. Если из него открыли задачу, задача доходит до клиента как любая другая.

Как подключить интеграцию и когда истекает токен

Форма подключения запрашивает репозиторий в формате owner/repo и персональный токен доступа (PAT). Токен хранится в зашифрованном виде и больше не показывается. При проверке сразу подтягиваются последние коммиты, и это подтверждает доступ на чтение к самому репозиторию. Экран источников проекта сейчас открыт только оператору системы, поэтому подключение делается через нас.

  • С fine-grained токеном GitHub добавляет в ответы дату истечения. За две недели до этого экран подключений показывает предупреждение, а оператору системы уходит письмо.
  • Когда у GitHub заканчивается квота запросов, забор останавливается и в следующий раз продолжается с того же места, без потери коммитов.
  • SLAtech Vantage не открывает issues, не комментирует и не пушит код.

Поддерживается и GitLab, включая собственный сервер: коммиты и, отдельной интеграцией, упавшие конвейеры GitLab CI. Bitbucket поддерживается только для коммитов, с именем пользователя и паролем приложения.

Частые вопросы

Какой токен GitHub нужен?
Персональный токен доступа с правом чтения репозитория. Чтобы забирать запуски GitHub Actions, нужно ещё право на чтение Actions, и это отдельная от коммитов интеграция. Лучше выбрать fine-grained токен: только с ним GitHub сообщает дату истечения, и SLAtech Vantage предупреждает за две недели до неё. Токен хранится в зашифрованном виде и больше никому не показывается.
Привязываются ли коммиты к задачам?
Нет. Коммит привязан к проекту и репозиторию, а не к конкретной задаче. Связь строится с ошибками: когда по стеку ошибки определяется класс, в котором она произошла, экран ошибки показывает последние коммиты, затронувшие его файл. Кроме того, сообщения коммитов попадают в базу знаний, так что изменение можно найти по описанию, в том числе на иврите.
Что происходит с упавшим запуском GitHub Actions?
Он попадает в поток ошибок проекта, как ошибка сервера. Запуски группируются по репозиторию, имени сценария, итогу и ветке, поэтому повторяющийся сбой виден как одна группа со счётчиком, а не как десятки строк. Удачный запуск не сохраняется, а отменённый вручную записывается как шум. Из такой группы можно открыть задачу, как и из любой группы ошибок.
Поддерживаются ли GitLab и Bitbucket?
Да, но в разном объёме. GitLab поддерживается и на gitlab.com, и на собственном сервере: коммиты и, отдельной интеграцией, упавшие конвейеры GitLab CI, которые попадают в поток ошибок. Bitbucket поддерживается только для коммитов, с именем пользователя и паролем приложения. Во всех случаях интеграция работает только на чтение, а токен хранится в зашифрованном виде.

Хотите видеть коммиты и упавшие запуски рядом с ошибками проекта? Можно начать с пробного периода.

Начать бесплатно