求助:TFS 2015与SonarQube集成失败及构建代理配置疑问
解决TFS 2015与SonarQube集成的兼容问题
我来帮你梳理下TFS2015集成SonarQube时遇到的兼容问题,结合实际经验给你几个可行的解决步骤:
一、先明确版本匹配的核心规则
这是最容易踩坑的点:SonarQube服务器版本、SonarC#插件版本、SonarQube MSBuild Runner版本必须严格对应,官方有明确的版本对应关系。比如:
- 如果你的SonarQube服务器是6.7.x LTS版本,对应的SonarC#插件要选5.12.x,MSBuild Runner则用2.4.x版本
- 绝对不能混用跨大版本的组件,比如用7.x的Runner去连6.x的服务器,必然会出现兼容错误
二、不要直接覆盖构建代理的任务目录文件
你直接替换C:\***\Agent\tasks\SonarQubePreBuild\1.0.35\MSBuild.SonarQube.Runner下的文件是不可取的,因为TFS的构建任务是绑定版本号的,直接替换文件会破坏任务的依赖逻辑和配置完整性。正确的更新方式是:
- 卸载旧的SonarQube任务:登录TFS服务器,进入「构建和发布」->「任务库」,找到SonarQubePreBuild、SonarQubePostBuild这些旧任务,删除对应版本
- 下载匹配版本的TFS任务扩展:去SonarQube官方的历史扩展包页面,下载和你服务器版本匹配的SonarQube TFS扩展(针对TFS2015的扩展包后缀是.vsix)
- 安装扩展到TFS:在TFS的「扩展管理」里上传这个.vsix包,然后让所有构建代理同步扩展(或者手动在代理机器上安装)
- 重启构建代理服务:确保新的任务文件被正确加载
三、修复之前覆盖文件导致的异常
如果你已经替换过文件,先做这些恢复操作:
- 从一台正常运行的同版本构建代理上,复制
SonarQubePreBuild\1.0.35目录的完整文件,覆盖你修改过的目录 - 清理构建代理的缓存:删除
C:\***\Agent\_work\_temp和C:\***\Agent\_work\_tasks\SonarQubePreBuild\1.0.35下的临时文件 - 重启构建代理的Windows服务(一般叫
VsoAgent.*)
四、重新配置构建定义并验证
- 打开你的TFS构建定义,删除旧的SonarQube任务,重新添加新版本的SonarQubePreBuild、SonarQubePostBuild任务
- 配置SonarQube服务器的URL、项目密钥、认证令牌(如果开启了认证)
- 运行一次测试构建,重点查看构建日志里的SonarQube初始化部分,确认以下信息:
确保这些版本和你之前确认的版本矩阵完全匹配,如果还是有兼容错误,检查服务器端的SonarC#插件是否安装正确,有没有残留的旧版本插件SonarQube Scanner for MSBuild 2.4 Using the .NET Framework version of the Scanner for MSBuild SonarQube server version: 6.7.7 SonarC# plugin version: 5.12.0.17728
额外注意事项
TFS2015是比较老旧的版本,最高兼容到SonarQube 7.x系列(8.x及以上版本不再支持TFS2015的构建任务),所以不要尝试用太新的SonarQube服务器,否则必然会出现兼容问题。
内容的提问来源于stack exchange,提问作者Yazid
相关产品推荐
相关产品推荐

