GitHub
Интеграция GitHub с Time позволяет получать уведомления о коммитах, pull request'ах, issues и workflow прямо в каналах Time, не переключаясь между инструментами.
Настройка
Плагин поддерживает как облачный GitHub (github.com), так и GitHub Enterprise Server.
Выполните команду /github setup в любом канале Time и следуйте интерактивным подсказкам — они проведут через создание OAuth приложения, настройку вебхука и объявление об интеграции в команде.
Для настройки вручную выполните следующие действия:
Регистрация OAuth приложения в GitHub
Системный администратор Time должен выполнить следующие шаги в GitHub:
- Перейти по адресу
https://github.com/settings/applications/newдля регистрации OAuth приложения. - Установить следующие значения:
- Application name —
Mattermost GitHub Plugin - <НАЗВАНИЕ КОМПАНИИ> - Homepage URL —
https://github.com/mattermost/mattermost-plugin-github - Authorization callback URL —
https://YOUR-TIME-URL.COM/plugins/github/oauth/complete, заменивhttps://YOUR-TIME-URL.COMна URL вашего сервера Time.
- Application name —
- Сохранить изменения.
- Нажать Generate a new client secret и подтвердить действие.
- Скопировать 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, из которых хотите получать уведомления.
- В GitHub перейти в Settings → Webhooks нужной организации или репозитория и выбрать Add webhook.
- Установить следующие значения:
- Payload URL —
https://YOUR-TIME-URL.COM/plugins/github/webhook, заменивhttps://YOUR-TIME-URL.COMна URL вашего сервера Time. - Content Type —
application/json - Secret — значение Webhook Secret, сгенерированное в системной консоли Time.
- Payload URL —
- В разделе 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
- Выбрать 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— новые и обновлённые issuespulls— все pull request'ыpulls_merged— смёрженные pull request'ыpulls_created— только созданные pull request'ыpushes— push-событияcreates— создание веток и теговdeletes— удаление веток и теговissue_creations— создание issuesissue_comments— комментарии к issuespull_reviews— ревью pull request'овreleases— релизыworkflow_success/workflow_failure— завершение отдельных job в GitHub Actionsworkflow_run_success/workflow_run_failure— завершение полного workflow run в GitHub Actionsdiscussions/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 <организация>/<репозиторий>.
Если вы хотите получать уведомления только из конкретного репозитория, а не всей организации, создайте вебхук на уровне репозитория, а не организации.