Как проверить ссылки в частном репозитории github
фон
мы пишем некоторую документацию для нашей службы поддержки. Мы хотим включить ссылки на файлы, которые хранятся в частных репозиториях на GitHub. Мы не хотим документации устарели, если кто-то переделывает код в отдельный репозиторий на GitHub, поэтому я ставлю задачи CI, который анализирует документацию (с jsoup если вам интересно) и находит все ссылки. Как только у нас есть все ссылки, мы начинаем проверять их.
Примечание: мы написали специальную ссылку проверки, так как один из критических набор ссылок у нас есть-наше решение для мониторинга, и к сожалению (и по понятным причинам) ЗАС мы используем возвращает 404 для не прошедших проверку подлинности запросов на URL оповещения. Сам SaaS использует 2FA для доступа к веб-интерфейсу, поэтому мы в конечном итоге делаем разбор URL-адресов, а затем создаем эквивалентный вызов API SaaS для проверки ссылки. Для мониторинга систему мы используем, это просто: все URL-адреса имеют одинаковый формат.
вопрос
можем ли мы проверить случайный URL GitHub как действительный (в идеале, используя только curl
- Я могу перевести на мой выбранный HTTP-клиент оттуда, и curl
дает более общий ответ) с помощью Личного маркера доступа? И если да, то как?
URL-адреса могут быть:
- простой прямой РЕПО URLs:
https://github.com/<org>/<repo>
- прямые URL-адреса филиалов:
https://github.com/<org>/<repo>/tree/<branch>
- файл URL-адреса:
https://github.com/<org>/<repo>/blob/<path/to/file>
- diff URLs:
https://github.com/<org>/<repo>/compare/[<branch>...]<branch>
- другие URL-адреса, основанные на наличии РЕПО и не изменяющиеся в дочернем пути, например
https://github.com/<org>/<repo>/pulls
,https://github.com/<org>/<repo>/settings/collaboration
, etc - плюс кто знает, какие другие URL-адреса люди добавят в документы...
вещи, которые я пробовал, которые не работали
http базовая аутентификация с персональным маркером доступа в качестве пароля, например.
curl -I -u stephenc:2....token.redacted....b https://github.com/stephenc/<repo-name>
HTTP/1.1 404 Not Found
аутентификация носителя HTTP, например
curl -I -H "Authorization: bearer 2....token.redacted....b" https://github.com/stephenc/<repo-name>
HTTP/1.1 404 Not Found
2 ответов
похоже, что это работает для некоторые URLs (не знаю, какие из них).
Я могу получить доступ curl -u agentgonzo:$TOKEN https://raw.githubusercontent.com/agentgonzo/repo/path/to/file
использование маркера API в качестве моего имени пользователя, но то же самое не работает наhttps://github.com URLs. Не уверен, поможет вам это или нет.
Я получил ответ от поддержки GitHub:нет
поскольку маркер личного доступа не будет работать для URL-адресов веб-интерфейса GitHub, нет, нет способа проверить все возможные URL-адреса частного РЕПО GitHub без вызова API в некоторых случаях.