SonarCloud: ошибка при запуске муравья и сонара при подключении к облаку сонара - PullRequest
0 голосов
/ 20 апреля 2019

У нас есть установка, в которой мы используем SonarQube с Ant и подключаемся к SonarCloud (https://sonarcloud.io). Эта установка всегда работала с локальной машины разработчика, а также с конвейеров битового буфера. С двух дней мы получали ошибку нижеЛокальный и конвейер bitbucket. Ниже приведена трассировка стека:

Project.sonar:
[sonar:sonar] Apache Ant(TM) version 1.10.5 compiled on July 10 2018
[sonar:sonar] SonarQube Ant Task version: 2.5
[sonar:sonar] Loaded from: file:<redacted_path>/sonarqube-ant-task-2.5.jar
[sonar:sonar] User cache: /Users/<user>/.sonar/cache

BUILD FAILED
<redacted_path>/build-sonar.xml:120: java.lang.IllegalStateException: not started
    at org.sonarsource.scanner.api.EmbeddedScanner.checkLauncherExists(EmbeddedScanner.java:244)
    at org.sonarsource.scanner.api.EmbeddedScanner.stop(EmbeddedScanner.java:164)
    at org.sonarsource.scanner.ant.SonarQubeTask.launchAnalysis(SonarQubeTask.java:101)
    at org.sonarsource.scanner.ant.SonarQubeTask.execute(SonarQubeTask.java:81)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:99)
    at org.apache.tools.ant.Task.perform(Task.java:350)
    at org.apache.tools.ant.Target.execute(Target.java:449)
    at org.apache.tools.ant.Target.performTasks(Target.java:470)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1388)
    at org.apache.tools.ant.Project.executeTarget(Project.java:1361)
    at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
    at org.apache.tools.ant.Main.runBuild(Main.java:834)
    at org.apache.tools.ant.Main.startAnt(Main.java:223)
    at org.apache.tools.ant.launch.Launcher.run(Launcher.java:284)
    at org.apache.tools.ant.launch.Launcher.main(Launcher.java:101)

Ниже приведена команда, которую мы используем для запуска sonar:

ant compile Project.sonar -Dsonar.host.url=https://sonarcloud.io -Dsonar.organization=<org_name> -Dsonar.login=<token_which_has_all_privs>

Мы попытались изменить токен sonar.login с помощьюновый (думая, что старый, возможно, истек), но он также не работал с новым.

Я не могу найти помощь где-либо еще относительно этой ошибки, так как она не говорит много. Я вижу другиеошибки типа «WebApp не запускались», но, похоже, это связано со случаем использования, когда SonarQube работает на локальном компьютере. Но в нашем случае мы подключаемся к хосту * 1012. * Мы также пробовали с sonar.login иsonar.password и он все еще не работает.

Любая помощь будет оценена.

Обновление 1 для вопроса mc1arke Это sufficient?Я могу создать новый базовый build-sonar.xml и предоставить его, но он будет иметь только содержимое ниже и некоторые свойства / переменные, специфичные для нашей среды.

Извлечение из build-sonar.xml выглядит следующим образом:

<taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml">
    <classpath>
        <pathelement location="${lib.dir}/sonarqube-ant-task-2.5.jar"/>
    </classpath>
</taskdef>

<target name="Project.sonar">
    <property name="sonar.projectKey" value="ProjectKey" />
    <property name="sonar.projectName" value="ProjectName" />
    <property name="sonar.projectVersion" value="1.0" />
    <property name="sonar.sources" value="${src.dir}" />
    <property name="sonar.binaries" value="${build.dir}" />
    <property name="sonar.java.binaries" value="${build.dir}" />
    <property name="sonar.java.libraries" value="${lib.dir}/*.jar"/>
    <property name="sonar.java.test.libraries" value="${lib.dir}/*.jar"/>
    <property name="sonar.java.source" value="1.8" />
    <property name="sonar.exclusions" value="<some modules>"/>
    <property name="sonar.jacoco.reportPath" value="${junit.reports}/coverage/jacoco.exec"/>
    <property name="sonar.junit.reportsPath" value="${junit.reports}" />
    <property name="sonar.jacoco.itReportPath" value="${junit.reports}/coverage/jacoco-it.exec"/>
    <property name="sonar.coverage.exclusions" value="<some modules>"/>
<sonar:sonar/>
</target>

Обновление 2: Я посмотрел на сонарный код в EmbeddedScanner.java, IsolatedLauncherFactory.java и IsolatedLauncherProxy.java, которые фактически должны вызывать ошибку.Я также выполнил команду ant в режиме -v, и ниже приведен ее вывод:

Project.sonar:
[antlib:org.sonar.ant] Could not load definitions from resource org/sonar/ant/antlib.xml. It could not be found.
[sonar:sonar] Apache Ant(TM) version 1.10.5 compiled on July 10 2018
[sonar:sonar] SonarQube Ant Task version: 2.5
[sonar:sonar] Loaded from: file:<redacted_path>/sonarqube-ant-task-2.5.jar
[sonar:sonar] keyStore is : 
[sonar:sonar] keyStore type is : jks
[sonar:sonar] keyStore provider is : 
[sonar:sonar] init keystore
[sonar:sonar] init keymanager of type SunX509
[sonar:sonar] User cache: /Users/<user.name>/.sonar/cache
[sonar:sonar] Extract sonar-scanner-api-batch in temp...
[sonar:sonar] Get bootstrap index...
[sonar:sonar] Download: https://sonarcloud.io/batch_bootstrap/index
[sonar:sonar] Get bootstrap completed

Итак, глядя на код и его вывод, я думаю, что ниже приведен поток кода:

EmbeddedScanner.checkLauncherExists() --> IsolatedLauncherFactory.createLauncher() --> JarDownloader.download() --> JarDownloader.getScannerEngineFiles() --> BootstrapIndexDownloader.getIndex()

Судя по журналу, индекс был возвращен успешно.Но либо JarDownloader.getScannerEngineFiles () , либо JarDownloader.download () не удалось из-за оператора журнала logger.debug («Создать изолированный загрузчик классов ...»); сразу после List<File> jarFiles = jarDownloader.download() in IsolatedLauncherFactory.createLauncher() не печатается.

Ссылка: доступен исходный код сонара здесь

1 Ответ

3 голосов
/ 22 апреля 2019

Ваша проблема в том, что sonar-ant-plugin не поддерживает SonarCloud.Плагин зависит от старой версии sonar-scanner-api, которая пытается получить список JAR-файлов для загрузки, получая /batch_bootstrap/index с удаленного сервера SonarQube.SonarCloud не предоставляет такой URL, но у него есть /bootstrap/index, который более новые версии sonar-scanner-api используют .

Обновление: версия 2.6.0.1426 сканера для Ant был выпущен, чтобы исправить проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...