Jenkins中SonarQube报告链接异常及相关技术问题咨询
我来分享下针对你遇到的这几个问题的排查思路和解决方案,我之前在维护Jenkins流水线的时候也踩过类似的坑:
一、SonarQube报告链接显示为纯文本而非超链接
这个问题大概率是插件配置、分析执行或者参数兼容的问题,按下面的步骤逐一排查:
检查SonarQube插件与服务器的绑定
先确认Jenkins全局配置里的SonarQube服务器是正确配置的(URL、认证token都没问题),然后去出问题的任务配置里,看看Sonar分析步骤是不是关联了这个服务器。如果任务没绑定正确的Sonar服务器,插件没法从SonarQube拉取报告的有效链接,只能显示纯文本。确认Sonar分析完整执行成功
去任务的构建日志里搜索Sonar相关的输出,看看有没有出现Analysis completed successfully的提示。如果Sonar分析中途报错(比如依赖缺失、Sonar服务器连接失败),插件只会记录分析的文本信息,不会生成超链接。弃用过时的
sonar.analysis.mode=publish参数
这个参数是SonarQube 6.x及更早版本的用法,7.x以上的版本已经完全弃用了,现在的标准配置是用sonar.host.url指定Sonar服务器地址,sonar.login传入认证token。你之前加的这个参数不仅没用,反而可能干扰插件的正常逻辑,建议直接删掉。检查任务类型与插件用法
- 如果是流水线任务:确保用插件提供的流水线语法,比如用
withSonarQubeEnv('你的Sonar服务器名称')包裹Sonar分析步骤,而不是手动在shell里执行sonar-scanner命令(手动执行的话插件没法自动关联报告链接)。 - 如果是自由风格任务:要添加官方的「SonarQube Scanner」构建步骤,而不是自己写shell脚本跑分析。
- 如果是流水线任务:确保用插件提供的流水线语法,比如用
对比正常/异常任务的配置差异
既然部分任务正常,部分不正常,把两者的配置拉出来对比:比如正常任务是不是用了插件的标准步骤,异常任务是不是手动执行的分析?有没有权限差异?比如Jenkins的运行账号有没有访问SonarQube API的权限?
二、仅构建不运行Sonar分析,是否会显示旧报告?
这个分两种情况:
- 如果是用SonarQube插件集成的任务:新的构建记录里不会显示Sonar报告入口,但之前跑过Sonar分析的旧构建记录里的报告链接会保留(除非你配置了「丢弃旧构建」规则,旧构建被清理掉)。
- 如果是手动在构建里生成的报告链接(非插件自动生成):要看你的脚本逻辑——如果没跑Sonar步骤时脚本没有更新链接,新构建可能不会显示报告,或者还是显示旧的,但这种情况不推荐,建议用官方插件集成。
内容的提问来源于stack exchange,提问作者Neha Kapila

