Sonarqube-> SVN Аутентификация требуется ошибка, хотя поставляется - PullRequest
0 голосов
/ 24 декабря 2018

Я настраиваю задания сканирования sonarqube в Jenkins, и я предоставил свои учетные данные svn в sonarqube в 'Администрирование> Конфигурация> SCM> Имя пользователя + Пароль.

Большинство заданий сканируются нормально с использованием данных svn, однако на одном конкретном задании я все еще получаю ошибку аутентификации, как показано ниже на этапе сканирования данных scm:

19:42:06.883 INFO: SCM provider for this project is: svn
19:42:06.883 INFO: 10938 files to be analyzed
19:42:16.899 INFO: 3/10938 files analyzed
19:42:26.901 INFO: 4/10938 files analyzed
.......
19:46:27.024 INFO: 246/10938 files analyzed
19:46:37.028 INFO: 247/10938 files analyzed
19:46:47.036 INFO: 247/10938 files analyzed
19:46:57.044 INFO: 247/10938 files analyzed
19:47:07.044 INFO: 247/10938 files analyzed
19:47:17.044 INFO: 247/10938 files analyzed
19:47:27.044 INFO: 247/10938 files analyzed
19:47:37.044 INFO: 247/10938 files analyzed
19:47:40.763 INFO: 248/10938 files analyzed
19:47:40.888 INFO: ------------------------------------------------------------------------
19:47:40.888 INFO: EXECUTION FAILURE
19:47:40.888 INFO: ------------------------------------------------------------------------
19:47:40.888 INFO: Total time: 2:02:46.450s
19:47:41.075 INFO: Final Memory: 36M/3064M
19:47:41.075 INFO: ------------------------------------------------------------------------
19:47:41.075 ERROR: Error during SonarQube Scanner execution
19:47:41.075 ERROR: Error when executing blame for file foo/bar.java
19:47:41.075 ERROR: Caused by: svn: E170001: Authentication required for '<http://svn-app:1234> john'
19:47:41.075 ERROR: 
19:47:41.075 ERROR: Re-run SonarQube Scanner using the -X switch to enable full debug logging.
WARN: Unable to locate 'report-task.txt' in the workspace. Did the SonarScanner succedeed?
ERROR: SonarQube scanner exited with non-zero code: 1
Finished: FAILURE

Что странно в том, чтоЯ запускал это сканирование несколько раз, и эта ошибка всегда появлялась вокруг 240-250-го файла, который он анализировал, т.е. не всегда один и тот же файл.Как ни странно, аутентификация прошла сначала, только вокруг 240-250-го файла, а затем появляется эта ошибка.

Различные решения рекомендуют отключить датчик scm (sonar.scm.disabled = true), который мои требования запрещают.Мне нужны данные обвинения scm.

Я пробовал следующие вещи:

  • Перезапуск сервера Jenkins
  • Перезапуск сервера Sonarqube
  • Перезапуск сервера SVN
  • ВКонфигурация задания jenkins> Свойства анализа sonarqube, установка sonar.scm.username и sonar.scm.password
  • Удаление задания, а также рабочего пространства и воссоздание нового задания.

1 Ответ

0 голосов
/ 27 марта 2019

Оказывается, это произошло из-за слишком низкого значения параметра KeepAliveTimeout в SVN.Когда он анализировал конкретный большой файл, он истекает по этому тайм-ауту (например, более 20 минут для 207-го файла в соответствии с моим примером кода), в результате чего SVN повторно вызывает sonarqube для учетных данных.

Теперь другие svn-клиенты могли бы создать кеш учетных данных в %HOMEPATH%/AppData/Roaming/Subversion/auth/svn.simple/ и извлекать этот кеш при возникновении такой ситуации.Однако svn-плагин Sonarqube (svnkit) не хранит кэш учетных данных, и даже если кеш существует, он не знает, как его прочитать (пробовал как с зашифрованным, так и с открытым текстом).

Редактирование svn KeepAliveTimeoutПараметр в httpd.conf решил эту проблему с помощью компромисса с производительностью сервера SVN теоретически - потому что SVN пришлось бы ждать дольше, прежде чем клиент не будет в состоянии закрыть соединение для восстановления ресурсов, поэтому увеличение параметра KeepAliveTimeout приведет к удержанию SVNбольше запросов в любой момент времени.

Ссылки:

Сетевая модель аутентификации SVN: http://svnbook.red -bean.com / nightly / en / svn.serverconfig.netmodel.html # svn.serverconfig.netmodel.creds

Аналогичная проблема: https://groups.google.com/forum/#!topic/sonarqube/-Vz2zoOBS1Y

Механизм аутентификации SVNkit: https://wiki.svnkit.com/Authentication: https://github.com/jenkinsci/svnkit

Sonarqube Репозиторий SVNkit: https://github.com/SonarSource/sonar-scm-svn

Плагин Jenkins SVNkit для репозитория: https://github.com/jenkinsci/svnkit

...