【问题标题】:Sonarcloud failure with Travis, Maven & github [duplicate]Travis,Maven和github的Sonarcloud失败[重复]
【发布时间】:2018-01-16 07:20:28
【问题描述】:

我从事的一个项目 (eclipse/scanning) 使用 Travis 和 Sonar 进行持续集成和代码分析。

上周,我注意到构建在声纳步骤失败:

ERROR: Error during SonarQube Scanner execution
org.sonar.squidbridge.api.AnalysisException: Please provide compiled classes of your project with sonar.java.binaries property

经过一些研究,我想我会 fixed this 更新 addons: 部分(sonarqubesonarcloud)并切换到使用 - mvn -q sonar:sonar 而不是 - sonar-scannerscript: 部分.travis.yml 文件。

但现在,通过集成测试的外部拉取请求(来自分叉)在声纳步骤由于不同的原因而失败:

$ mvn -q sonar:sonar
...
[ERROR] SonarQube server [http://localhost:9000] can not be reached

[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.3.0.603:sonar (default-cli) on project org.eclipse.scanning: Unable to execute SonarQube: Fail to get bootstrap index from server: Failed to connect to localhost/127.0.0.1:9000: Connection refused (Connection refused) -> [Help 1]

这似乎与日志中的早期差异有关:

Encrypted environment variables have been removed for security reasons.
See https://docs.travis-ci.com/user/pull-requests/#Pull-Requests-and-Security-Restrictions

还有一个完全缺失的 SonarCloud 插件部分。

要查看差异,请将failed build #625(来自分叉存储库的拉取请求)与successful build #628(来自存储库中的拉取请求)进行比较。

大约一个月前,外部拉取工作没有问题,例如 build #536 通过,正确运行 Setting environment variables from repository settingsSonarCloud addonsonar-scanner

但是,后续构建,例如 build #538 已通过,但这只是因为 sonar-scanner 跳过了分析,而 exited with 0 即使它们未能运行。

虽然我可能只是在外部拉取请求上禁用 Sonar,但如果我能修复我们的存储库,这样我们就可以对内部和外部拉取请求进行集成测试和代码分析,所以

  • 我原来的修复是正确的吗?
    • 如果是这样,我如何让它同时处理内部和外部拉取请求?
    • 如果不是,我应该如何解决原来的问题?

请注意,此问题已被 How do I get Sonarcloud to run on pull requests from forks with Travis, Maven & github 取代,How do I get Sonarcloud to run on pull requests from forks with Travis, Maven & github 专注于潜在问题,而不是试图解决某些症状。

【问题讨论】:

    标签: java maven github sonarqube travis-ci


    【解决方案1】:

    您的 PR 分析正在尝试(但失败)使用默认服务器:localhost:9000。

    在另一种情况下,您可以 update settings.xml 指定位置,但由于您使用的是 Travis,因此您将在命令行中传递它:mvn sonar:sonar -Dsonar.host.url=https://sonarcloud.io

    顺便说一句,这在您的正常 Travis 构建中有效,因为 Travis 的 SonarQube 集成专门是 Travis-SonarCloud 集成,因此服务器会自动填充。

    【讨论】:

    • 谢谢,您想知道该 URL 可能需要什么吗?我们以前不需要这个,并且一些 Travis 作业在没有它的情况下运行良好,例如 travis-ci.org/eclipse/scanning/jobs/262286564 在没有 -Dsonar.host.url 的情况下运行良好(大概是 mvn sonar:sonar 命令?)。明天早上我会在我们所有排队的 travis 作业运行后更新我的问题(我们未能让 Travis 将我们的钱用于更高的优先级,因此在英国夏令时下午 3 点之后事情变得缓慢)。
    • 查看我的更新答案@MarkBooth
    • 再次感谢。当我添加这个时,mvn Sonar:Sonar 错误更改为Insufficient privileges,这证实这是早期Encrypted environment variables have been removed for security reasons. 错误的问题,请参阅travis-ci.org/eclipse/scanning/builds/262997253 我想我需要问一个不同的问题 - “我该怎么做让 Sonar 在来自分叉的拉取请求上运行”。当我这样做时,我会在这里链接。
    【解决方案2】:

    您可以尝试删除 Sonar Qube 的 directory data/es。然后重启 yoyr SonarQube,SonarQube 将重新创建所有 ES 索引。

    【讨论】:

    • 感谢 Mayank Sharma,但据我所知,每个 travis 构建都会创建一个干净/空的 docker 容器。它确实足够干净,它必须克隆所有的 repos 作为构建过程的一部分。
    猜你喜欢
    • 2021-09-18
    • 2018-01-18
    • 2021-05-07
    • 2012-12-23
    • 1970-01-01
    • 2018-12-04
    • 1970-01-01
    • 2021-12-15
    • 2022-08-22
    相关资源
    最近更新 更多