Обзор кода Discourse

:discourse2: Краткое описание Discourse Code Review позволяет просматривать коммиты GitHub в Discourse.
:hammer_and_wrench: Ссылка на репозиторий https://github.com/discourse/discourse-code-review
:open_book: Руководство по установке Как установить плагины в Discourse

Функции

Что это такое?

Плагин Discourse Code Review обеспечивает двустороннюю интеграцию с репозиториями кода GitHub. Он позволяет вашей команде просматривать коммиты в репозитории, используя функции и плагины Discourse, такие как назначение задач, шепоты (whispers), уведомления, настраиваемые рабочие процессы и многое другое. Каждый коммит в репозитории становится темой. Ответы на тему дублируются на GitHub. Интеграция является двунаправленной, что означает, что вы можете комментировать в Discourse и видеть это на GitHub, или комментировать на GitHub и видеть это в Discourse.

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

Он позволяет убедиться, что несколько членов команды осведомлены обо всех изменениях, внесённых в репозитории. Вы можете отмечать коммиты для последующего рассмотрения, назначать работу по ревью и многое другое.

Примечание: При просмотре темы, которую можно утвердить, вы можете использовать клавишу y на клавиатуре, чтобы быстрее утверждать коммиты.

Могу ли я увидеть это в действии?

Discourse использует этот плагин внутренне для отслеживания репозиториев. Пример стороны Discourse можно увидеть здесь:

На GitHub та же тема выглядит так:

Конфигурация

Плагин полагается на вебхуки GitHub для обнаружения репозиториев и изменений в них. Для минимальной конфигурации вам нужно установить следующую настройку в виде секретной строки.

code review github webhook secret

После того как вы установили её в вашем репозитории GitHub, настройте вебхук со следующими параметрами:

Payload URL: https://YOUR_DISCOURSE/code-review/webhook
Content Type: application/json
Secret: значение code review github webhook secret
Event Types:

  • Комментарии к коммитам
  • Комментарии к задачам
  • Pull requests
  • Рецензии на pull requests
  • Комментарии к рецензиям на pull requests
  • Pushes

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

code review api username : GitHub очень ограничивает количество анонимных запросов к API. Эта настройка позволяет использовать учётные данные пользователя Discourse для запросов /comments и /commit. Это значительно снижает вероятность достижения лимитов запросов.

code review catch up commits : количество коммитов, которые нужно «догнать» и для которых нужно создать темы при обнаружении нового репозитория.

code review default parent category: выберите родительскую категорию по умолчанию для категорий, создаваемых плагином

code review pending tag: Тег, который будет применяться ко всем непроверенным коммитам, по умолчанию pending

code review approved tag: Тег, который будет применяться к утверждённым коммитам, по умолчанию approved

code_review_followup_tag: Тег, который будет применяться к коммитам, требующим последующего рассмотрения, по умолчанию follow-up

code review allow self approval: Разрешено ли сотрудникам утверждать собственные коммиты?

code review default mute new categories: Новые категории, созданные code review, по умолчанию отключены для пользователей

code review skip duration minutes: Нажатие кнопки пропустить на коммите предотвратит его повторное отображение в течение количества минут, заданного этой настройкой.

CHANGELOG

TODO

Дополнительные сведения

Как Discourse использует этот плагин

Кратко — этот плагин был разработан, чтобы дополнить использование командой Discourse GitHub для ревью кода.

Подробнее

От @sam:

  • Мы по-прежнему используем PR через интерфейс GitHub и любим делать PR для множества изменений. Здесь ничего не изменилось. GitHub — это здорово, мы любим GitHub. У них отличный рабочий процесс для изменений, которые ещё не были приняты. Однако…

  • Рабочий процесс GitHub для изменений, которые были закоммичены напрямую в репозиторий, ужасен.

  • Review заполняет пробел, который сегодня просто невозможно заполнить с помощью GitHub. Мы хотим, чтобы хотя бы один член команды просматривал каждое изменение, внесённое в наши различные git-репозитории, принадлежащие Discourse. Если мы будем использовать интерфейс, предоставленный GitHub, никто никогда не сможет делать ничего, кроме pull requests. Это значительно замедлит нас.

  • Нам нужна возможность общаться конфиденциально, не давая знать об этом всему миру, в отношении определённых изменений. Например: Нам лучше как можно скорее развернуть этот классный фикс в <вставить название большой компании>, @sam, можешь заняться этим?

  • Нам нужна возможность утверждать внесённые изменения или запрашивать последующее рассмотрение, чего не предлагает интерфейс GitHub.

  • Нам нужна возможность назначать определённые коммиты пользователю. Допустим, @sam делает коммит содержащий некоторые ошибки. Хорошо, что мы можем напрямую назначить ему этот конкретный коммит, пометить его для последующего рассмотрения и затем отслеживать, как он будет рассмотрен.

  • Discourse очень хорошо справляется с этим всем разговорами, и небольшие функции делают довольно большую разницу. Я вижу, когда люди набирают текст. Мне никогда не нужно обновлять страницы, чтобы изменения появились. Цитирование очень удобно, загрузка изображений тоже удобна, и так далее.

  • Discourse очень хорошо справляется с состоянием прочтения: вы получаете очень сильные гарантии того, что прочитали каждую вещь один раз. С GitHub я не знаю, какие коммиты я прочитал, а какие нет. У нас есть невероятно эффективный способ справляться с потоком информации.

И список продолжается…

Таким образом, review выступает как дополнение к GitHub: в настоящее время мы используем GitHub, чтобы справляться с изменениями, которые ещё не были приняты. И мы используем review, чтобы правильно обрабатывать изменения, которые уже были приняты.

72 лайка

Я пытаюсь понять цель этого плагина. У меня есть предположение, что мне что-то подобное нужно, но я не вижу, как это повышает эффективность. Когда кто-то одобряет pull request и сливает его в ветку, что именно в вашем процессе требует ещё одного одобрения для связанного коммита?

GitHub не предлагает этого в отношении коммитов, поскольку предполагается, что это уже было решено в рамках pull request. Что я упускаю?

Возможно, дело в том, что в вашей команде есть люди, которые могут одобрять pull request, но не имеют квалификации для принятия окончательного решения по коммиту в контексте реального релиза? Цель ли это в том, чтобы pull request можно было быстро слить и проверить, не дожидаясь человека, имеющего последнее слово, с уверенностью, что этот человек или команда проверят коммит перед созданием релиза?

Или же это в первую очередь для поддержки приватных обсуждений в публичных репозиториях?

Мне бы очень хотелось получить более глубокое понимание преимуществ использования этого плагина в вашем рабочем процессе. Спасибо!

Это было в основном пережитком более ранних рабочих процессов в Discourse.

В те времена мы использовали его для ретроспективного утверждения наборов изменений.

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

1 лайк