Не удается добавить Sonar к заданию Maven Jenkins с учетными данными

Я пытаюсь заставить плагин SonarQube работать с Jenkins. Я использую официальное руководство< /а>:

  1. Созданы глобальные учетные данные на Jenkins с секретным текстом с сервера Sonar: Администрирование -> Конфигурация -> Шифрование
  2. Настроил Jenkins и добавил наш сервер SonarQube и аутентификацию с 1.
  3. Включен параметр «Подготовить среду сканера SonarQube» в конфигурации задания.
  4. Добавлено $SONAR_MAVEN_GOAL -Dsonar.host.url=$SONAR_HOST_URL -Dsonar.login=$SONAR_AUTH_TOKEN к целям задания

Все это приводит к исключению:

Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.6.0.1398:sonar (default-cli) on project com.qualitype.foundation.build: 
Not authorized. Please check the properties sonar.login and sonar.password. 

Что я пытался исправить эту проблему:

  • добавлены sonar.login и sonar.password в pom.xml
  • добавлены sonar.login и sonar.password в цели конфигурации задания
  • добавлены sonar.login и sonar.password в MAVEN_OPTS конфигурации задания
  • все вышеперечисленное с токеном пользователя sonar.login (из Профиль -> Безопасность -> Токены)
  • заменил секретный текст учетных данных на вышеупомянутый токен
  • все вышеперечисленное только без переменной (например, не $SONAR_AUTH_TOKEN, а фиксированное значение)
  • используя шаг после сборки «Анализ SonarQube с Maven»

Ни один из них не работает, все имеют одно и то же исключение. Что работает, так это просто вызвать sonar:sonar и отключить «Подготовить среду сканера SonarQube», потому что наш pom.xml настроен именно так. В тот момент, когда я снова включаю «Подготовить среду сканера SonarQube», сборка завершается ошибкой.

Я надеялся, что информация Sonar будет отображаться в задании Jenkins, если я буду использовать официальный плагин вместо того, чтобы просто вызывать sonar:sonar.

Как заставить подключаемый модуль Sonar работать с Jenkins?


person Steffi S.    schedule 29.05.2019    source источник
comment
Пожалуйста, добавьте скрин Manage Jenkins → Configure System → SonarQube servers (не забудьте нажать кнопку Advanced...).   -  person agabrys    schedule 30.05.2019
comment
@agabrys Какая информация актуальна? Заполнены только имя, URL-адрес сервера и токен аутентификации сервера, и я не совсем уверен, что должен указывать здесь внутреннюю информацию компании.   -  person Steffi S.    schedule 03.06.2019


Ответы (1)


в зависимости от вашей конфигурации Maven в /configureTools/ вы должны добавить следующее в свой maven settings.xml, который находится в /configfiles/:

<id>sonar</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <sonar.host.url>URL to your Sonar-Server</sonar.host.url>
            <sonar.login>the token you generated on Sonaqrqube</sonar.login>             
        </properties>
    </profile>

Sonartoken, который вы можете указать в настройках плагина Sonar, обычно не учитывается для Maven (пока вы не укажете его с помощью параметра -D script.sh "mvn sonar:sonar -Dsonar.branch=${script.env.getProperty('BRANCH_NAME')} -Dstyle.color=always -Dsonar.login=$token). В целом то, как Sonarqube использует токен в качестве замены пользователя/пароля, не соответствовало нашей автоматической настройке экземпляра. Таким образом, мы закончили тем, что использовали вызовы REST для создания короткоживущего токена для каждой сборки в нашей пользовательской конвейерной библиотеке Jenkins.

person Markus    schedule 24.07.2019