Как проверить, какой плагин / сервис Jenkins постоянно звонит в GitHub API? - PullRequest
0 голосов
/ 07 апреля 2020

Наш сервер jenkins (версия 2.164.2) продолжает делать множество запросов к Github, поэтому он превышает ограничение скорости Github API. Служба поддержки Github обнаружила, что строка пользовательского агента git-credential-manager обеспечивает 60% вызовов Api. Большинство вызовов - https://api.github.com/user/subscriptions, а агент - git-credential-manager (Microsoft Windows NT 6.2.9200.0; Win32NT; x64) CLR/4.0.30319 git-tools/1.20.0 597,376 57.032%

Из обозревателя процессов видно, что Jenkins запускает лот git -credential-manager: enter image description here

Мы добавили некоторые регистраторы журналов в Jenkins для org.jenkinsci.plugins.github и org.jenkinsci.plugins.github_branch_source, но они не делают много вызовов Github. Есть ли способ выяснить, какие плагины Jenkins совершают эти звонки?

1 Ответ

0 голосов
/ 11 апреля 2020

Есть ли какой-нибудь способ выяснить, какие плагины Jenkins делают эти звонки?

Я недостаточно знаком с Jenkins, чтобы комментировать это, но я могу рассказать вам немного больше о поведении, которое вы видите, поскольку это может помочь вам определить причину root.

git.exe вызывает git-remote-https.exe для взаимодействия с GitHub через HTTPS, который затем вызывает git-credential-manager, поскольку это настроено вспомогательный скрипт для получения учетных данных. git-credential-manager затем вызывает api.github.com/v3/user/subscriptions, чтобы проверить, действительны ли имеющиеся у него учетные данные (вероятно, хранящиеся в Windows хранилище учетных данных).

https://github.com/microsoft/Git-Credential-Manager-for-Windows/blob/1145b59498378a7ddbccdc45b216e17ef0d0a664/GitHub.Authentication/Src/Authority.cs#L190 -L208

Я не думаю, что это связано с конкретным c плагином, но больше с Дженкинсом, работающим с частными репозиториями и вызывающим Git на машине. Если вы работаете с частными репозиториями GitHub, это может потребовать вызовов API для аутентифицируемой учетной записи, что приводит к ограничению скорости.

Я бы проверил следующие типы операций в процессе сборки:

  • сборок, которые не кэшируют репозиторий на диске между сборками (если это поддерживается)
  • сборок, которые включают шаги выборки / извлечения / извлечения (больше сборок, больше вызовов API) )
  • клонирование репозиториев или субмодулей на лету в скриптах
...