Перейти к основному содержимому

GitHub

Интеграция GitHub с Time позволяет получать уведомления о коммитах, pull request'ах, issues и workflow прямо в каналах Time, не переключаясь между инструментами.

Настройка

примечание

Плагин поддерживает как облачный GitHub (github.com), так и GitHub Enterprise Server.

Выполните команду /github setup в любом канале Time и следуйте интерактивным подсказкам — они проведут через создание OAuth приложения, настройку вебхука и объявление об интеграции в команде.

Для настройки вручную выполните следующие действия:

Регистрация OAuth приложения в GitHub

Системный администратор Time должен выполнить следующие шаги в GitHub:

  1. Перейти по адресу https://github.com/settings/applications/new для регистрации OAuth приложения.
  2. Установить следующие значения:
    • Application nameMattermost GitHub Plugin - <НАЗВАНИЕ КОМПАНИИ>
    • Homepage URLhttps://github.com/mattermost/mattermost-plugin-github
    • Authorization callback URLhttps://YOUR-TIME-URL.COM/plugins/github/oauth/complete, заменив https://YOUR-TIME-URL.COM на URL вашего сервера Time.
  3. Сохранить изменения.
  4. Нажать Generate a new client secret и подтвердить действие.
  5. Скопировать Client ID и Client Secret.

Настройка Time

Системный администратор Time должен выполнить следующие шаги в системной консоли Time, в настройках плагина GitHub:

  • Введите GitHub OAuth Client ID и GitHub OAuth Client Secret, которые вы получили при регистрации OAuth приложения.
  • Создайте Webhook Secret и At Rest Encryption Key, выбрав Regenerate рядом с каждым полем. Скопируйте значение Webhook Secret — оно понадобится при настройке вебхука в GitHub.
  • (Необязательно) GitHub Organizations — ограничьте интеграцию конкретными организациями GitHub, указав их через запятую.
  • (Необязательно) Enable Private Repositories — включите возможность работы с приватными репозиториями. Затронутые пользователи получат уведомление и должны будут повторно подключить свои учётные записи GitHub.
  • (Необязательно) Connect to private Repositories by default — включите, чтобы команда /github connect автоматически запрашивала доступ к приватным репозиториям (работает при включённом Enable Private Repositories).
  • (Необязательно) Enable Code Previews — включите предпросмотр кода при вставке постоянных ссылок на файлы GitHub. Варианты: Enable for public repositories (по умолчанию), Enable for public and private repositories (внимание: содержимое приватных файлов может появиться в публичных каналах), Disable.
  • (Необязательно) Display Notification Counters in Left Sidebar — отключите, если счётчики уведомлений GitHub на боковой панели в десктопных браузерах не нужны. Включено по умолчанию.
  • (Необязательно) Show Author in commit notification — включите, чтобы в уведомлениях о коммитах отображался автор коммита вместо того, кто сделал push.
  • (Необязательно) Get notifications for draft pull requests — включите, чтобы получать краткое уведомление при создании черновика PR и полное — при переводе его в статус «готов к ревью».
  • (Необязательно) Enable Webhook Event Logging — включите логирование событий вебхука при уровне логирования DEBUG.
  • (Необязательно) PR review target (days) — укажите количество дней до истечения срока ревью. При значении больше нуля в /github todo отображается информация о просроченных ревью. Значение 0 отключает функцию.
  • (Необязательно) Post overdue review alerts to channel (ID) — укажите ID канала, в который ежедневно будут публиковаться сводки о просроченных ревью (работает совместно с PR review target). Бот GitHub должен быть участником указанного канала.
  • (GitHub Enterprise) Enterprise Base URL и Enterprise Upload URL — укажите URL вашего GitHub Enterprise Server, например https://github.example.com. Значения часто совпадают.

Настройка вебхука в GitHub

Создайте вебхук для каждой организации или репозитория GitHub, из которых хотите получать уведомления.

  1. В GitHub перейти в SettingsWebhooks нужной организации или репозитория и выбрать Add webhook.
  2. Установить следующие значения:
    • Payload URLhttps://YOUR-TIME-URL.COM/plugins/github/webhook, заменив https://YOUR-TIME-URL.COM на URL вашего сервера Time.
    • Content Typeapplication/json
    • Secret — значение Webhook Secret, сгенерированное в системной консоли Time.
  3. В разделе Which events would you like to trigger this webhook? выбрать Let me select individual events и отметить следующие события:
    • Branch or Tag creation
    • Branch or Tag deletion
    • Discussions и Discussion comments
    • Issue comments и Issues
    • Pull requests, Pull request review, Pull request review comments
    • Pushes
    • Releases
    • Stars
    • Workflows
  4. Выбрать Add webhook для сохранения.

Использование

Пользователи, которые хотят использовать возможности интеграции GitHub, должны подключить учётную запись GitHub к Time.

После подключения вы будете получать прямые сообщения от бота GitHub в Time, когда кто-то упомянет вас, запросит ревью, прокомментирует или изменит один из ваших pull request'ов или issues, либо назначит вас ответственным за issue в GitHub.

Подключение учётной записи GitHub к Time

Чтобы связать свою учётную запись Time с учётной записью GitHub, используйте команду /github connect в любом канале Time.

Отключите учётную запись GitHub, выполнив команду /github disconnect. Выполните команду /github me, чтобы узнать, какая учётная запись подключена.

После подключения выполните команду /github help, чтобы посмотреть, что вы можете сделать.

Начало работы

Вот некоторые распространённые команды, с которых можно начать:

  • /github todo — получить список задач в GitHub: непрочитанные уведомления и pull request'ы, ожидающие вашего ревью.
  • /github issue create [заголовок] — создать issue в GitHub, не покидая Time. Можно заранее указать заголовок.
  • /github settings notifications on|off — включить или выключить персональные уведомления.
  • /github settings reminders on|off|on-change — включить, выключить или настроить ежедневные напоминания только при наличии изменений.
  • /github mute add <username> — заглушить пользователя GitHub. Вы перестанете получать уведомления о его комментариях в ваших PR и issues.
  • /github mute delete <username> — снять заглушку с пользователя.
  • /github mute list — список заглушённых пользователей.
  • /github default-repo set <org/repo> — установить репозиторий по умолчанию для текущего канала.
  • /github default-repo get — посмотреть текущий репозиторий по умолчанию.
  • /github default-repo unset — сбросить репозиторий по умолчанию.

Подписки на канал

Запустите /github subscriptions list, чтобы просмотреть все подписки текущего канала.

Чтобы подписать канал Time на уведомления из репозитория или организации GitHub, выполните команду /github subscriptions add <организация>/<репозиторий> [--features <события>].

По умолчанию подписка включает события pulls,issues,creates,deletes. Поддерживаемые значения флага --features:

  • issues — новые и обновлённые issues
  • pulls — все pull request'ы
  • pulls_merged — смёрженные pull request'ы
  • pulls_created — только созданные pull request'ы
  • pushes — push-события
  • creates — создание веток и тегов
  • deletes — удаление веток и тегов
  • issue_creations — создание issues
  • issue_comments — комментарии к issues
  • pull_reviews — ревью pull request'ов
  • releases — релизы
  • workflow_success / workflow_failure — завершение отдельных job в GitHub Actions
  • workflow_run_success / workflow_run_failure — завершение полного workflow run в GitHub Actions
  • discussions / discussion_comments — обсуждения и комментарии к ним
  • label:"<название>" — события, помеченные конкретным лейблом
примечание

Некоторые значения несовместимы и не могут быть указаны одновременно: issues и issue_creations, pulls и pulls_merged, pulls и pulls_created. При использовании label: необходимо также указать одно из: issues, issue_creations, pulls.

Например, чтобы получать уведомления об issues и pull request'ах с лейблом Help Wanted из репозитория org/repo, выполните /github subscriptions add org/repo --features issues,pulls,label:"Help Wanted".

Чтобы отписаться от уведомлений, выполните /github subscriptions delete <организация>/<репозиторий>.

подсказка

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