Что индексируется
Вы выбираете любую комбинацию из трёх типов содержимого:- Pull requests (запросы на слияние): заголовок и описание каждого запроса на слияние, открытого и закрытого. Yahont также сохраняет автора, исполнителей, метки, состояние, статус слияния, число коммитов и изменённых файлов и метки времени в качестве метаданных.
- Issues (задачи): заголовок и описание каждой задачи, открытой и закрытой, с автором, исполнителями, метками, состоянием и метками времени в качестве метаданных.
- Documents (документы): файлы документации из каждого репозитория.
Это файлы
.md,.mdx,.markdown,.rstи.txt, а также файлы без расширения, которые по соглашению являются документацией, такие какREADME,LICENSE,CHANGELOG,CONTRIBUTINGиCODEOWNERS.
Что не индексируется
- Комментарии к задачам и запросам на слияние, комментарии рецензентов, диффы и коммиты
- Исходный код, а также файлы данных или конфигурации, такие как
.json,.yamlи.csv - Файлы больше 1 МБ, бинарные файлы
и всё в
.git,node_modules,vendor,dist,build,.venvили__pycache__ - Вики, обсуждения, релизы и проекты
Перед началом
Вам понадобятся:- Аккаунт администратора Yahont.
- Персональный токен доступа GitHub — fine-grained или classic. Yahont аутентифицируется только с помощью токена; GitHub App и вход через OAuth не поддерживаются.
- Для синхронизации прав — Enterprise Edition. В Yahont CE синхронизации прав нет.
Создание токена
Создайте токен от имени пользователя, который видит каждый репозиторий, который вы хотите индексировать; для синхронизации прав пользователю токена также нужен доступ push к каждому приватному репозиторию. Fine-grained токены — вариант с наименьшими привилегиями. Используйте classic-токен, если ваша организация не разрешает fine-grained токены или если один токен должен охватывать репозитории нескольких владельцев. Выбирайте срок действия осознанно: когда токен истекает или отзывается, индексация останавливается, пока вы не сохраните в Yahont новый. После создания токена сразу скопируйте его — GitHub показывает его только один раз.- Fine-grained токен
- Classic токен
- Resource owner: пользователь или организация, которым принадлежат репозитории. Для синхронизации прав нужно разрешение уровня организации, поэтому для синхронизации прав выберите организацию, а не личный аккаунт. Организация должна разрешать fine-grained токены и может требовать этап одобрения, прежде чем токен для неё заработает.
- Repository access: репозитории для индексации или All repositories.
- Repository permissions: установите Contents, Issues и Pull requests в Read-only. GitHub добавляет Metadata сам.
- Organization permissions, только если вы используете синхронизацию прав: установите Members в Read-only.
Настройка коннектора в Yahont
Откройте коннектор GitHub
Создайте учётные данные
Задайте название коннектора и владельца
https://github.com/onyx-dot-app/onyx это onyx-dot-app.Выберите репозитории
- Specific Repository: введите одно имя репозитория в Repository Name(s), например
onyx, или несколько через запятую, напримерonyx,docs. Подстановочные знаки не работают. - Everything: индексировать каждый репозиторий этого владельца, который видит токен.
Выберите типы содержимого
Выберите тип доступа
Задайте ветку (необязательно)
gh-pages;
пусто означает ветку по умолчанию каждого репозитория. Он влияет на индексацию,
только когда включён Include Documents?, хотя для одного репозитория Yahont всё равно проверяет при настройке,
что ветка существует. После изменения в существующем коннекторе выберите Re-Index на странице коннектора,
чтобы подхватить новую ветку.Создайте и проверьте
GitHub Enterprise Server
Чтобы индексировать инстанс GitHub Enterprise Server, задайте GitHub Enterprise Server URL в учётных данных равным адресу вашего сервера. Работают и веб-хостhttps://github.example.com, и корень API https://github.example.com/api/v3.
Создайте персональный токен доступа на самом инстансе Enterprise Server по тому же пути в Settings;
доступность там fine-grained токенов зависит от версии и конфигурации сервера.
URL должен использовать HTTPS. При уровне защиты от SSRF
по умолчанию Yahont также отклоняет адреса частной сети; администратор может смягчить этот уровень,
чтобы обратиться к внутреннему серверу.
URL хранится в учётных данных,
поэтому одно развёртывание Yahont может индексировать github.com и Enterprise Server параллельно с разными учётными
данными.
Развёртывания с самостоятельным размещением могут вместо этого задать переменную окружения GITHUB_CONNECTOR_BASE_URL
как значение по умолчанию для всего развёртывания для учётных данных с пустым полем; см.
Конфигурация.
Синхронизация прав
Задайте тип доступа Auto Sync Permissions при создании коннектора, и пользователь Yahont будет видеть только то содержимое GitHub, которое он может читать на GitHub. Для администратора по умолчанию выбрано Public, поэтому выбирайте этот вариант осознанно; тип доступа нельзя изменить позже в интерфейсе администратора, поэтому для смены коннектор нужно создать заново.- Документы из публичных репозиториев видны каждому пользователю Yahont.
- Документы из приватных репозиториев видны соавторам репозитория, включая людей, имеющих доступ через команду.
- Документы из внутренних репозиториев (GitHub Enterprise) видны членам организации, сопоставленным по адресу электронной почты, как описано ниже.
Сопоставление пользователей GitHub с пользователями Yahont
Yahont сопоставляет по адресу электронной почты: публичный адрес электронной почты в профиле GitHub должен совпадать с адресом для входа в Yahont, без учёта регистра. Пользователь, у которого адрес в GitHub скрыт, не задан или отличается от адреса в Yahont, не видит содержимого приватных и внутренних репозиториев. Чтобы задать публичный адрес электронной почты в GitHub, откройте Settings -> Emails, снимите Keep my email addresses private, затем выберите адрес в Public profile -> Public email.Требования к токену
- Пользователю токена нужен доступ push к каждому приватному репозиторию, который индексирует коннектор, потому что GitHub раскрывает список соавторов репозитория только пользователям с доступом push.
- Если какой-либо репозиторий коннектора не удаётся синхронизировать, запуск обновления прав останавливается, а остальные репозитории пропускаются. Синхронизация прав «закрывается при сбое»: пока запуски продолжают завершаться ошибкой, пользователи могут потерять доступ к документам приватных и внутренних репозиториев, поэтому быстро исправляйте сбойную синхронизацию.
- Для внутренних репозиториев пользователь токена должен быть членом организации. Не член получает только публичных членов организации, что молча исключает большинство пользователей.
- Команды GitHub не синхронизируются как группы Yahont. Члены команды всё равно получают доступ к приватным репозиториям через список соавторов. Team members still get access to private repositories through the collaborator list.
Устранение неполадок
Ни один из указанных репозиториев недоступен
Ни один из указанных репозиториев недоступен
В вашем токене GitHub нет авторизации для доступа к организации
В вашем токене GitHub нет авторизации для доступа к организации
Не найдено репозиториев для организации или пользователя
Не найдено репозиториев для организации или пользователя
repo или fine-grained токену доступ к репозиториям
владельца.Приватные репозитории отсутствуют в индексе
Приватные репозитории отсутствуют в индексе
repo,
fine-grained токен не включает эти репозитории или владелец — личный аккаунт в режиме Everything,
который находит только публичные репозитории.Ветка не найдена
Ветка не найдена
Пользователь не видит результатов GitHub при синхронизации прав
Пользователь не видит результатов GitHub при синхронизации прав
Проверка не пройдена из-за превышения лимитов GitHub
Проверка не пройдена из-за превышения лимитов GitHub
Учётные данные GitHub недействительны или просрочены
Учётные данные GitHub недействительны или просрочены

