【问题标题】:Sonarqube with dotnet core works fine on command line but not from Jenkins带有 dotnet 核心的 Sonarqube 在命令行上可以正常工作,但不能来自 Jenkins
【发布时间】:2018-07-15 20:42:33
【问题描述】:

我正在尝试在 Windows 上使用 SOnarQube MsBuild 在 Jenkins 的 .NET Core 2.0 解决方案上启动 Sonarqube。

当我从 Jenkins 工作区执行以下脚本时,它工作正常:

C:\SonarQube\bin\MSBuild.SonarQube.Runner.exe begin /k:XXXX.Campaigns /n:CI /v: /d:sonar.host.url=http://x.x.x.x:9000 /d:sonar.verbose=true /d:sonar.projectBaseDir="C:\Program Files (x86)\Jenkins\workspace\CI"
dotnet clean
dotnet build
C:\SonarQube\bin\MSBuild.SonarQube.Runner.exe end

但是当我从 Jenkins 执行相同的命令时,我收到了这条消息:

SonarQube MSBuild 集成失败:SonarQube 是 无法收集有关您的项目所需的信息。 可能的原因:

  1. 该项目尚未构建 - 该项目必须在 在开始步骤和结束步骤之间。
  2. 不支持的 MSBuild 版本 已用于构建项目。目前 MSBuild 14.0 以上
  3. 开始、构建或结束步骤尚未全部完成 从同一文件夹启动

我使用 Jenkins 2.46.2 - MSBuild 15 - Sonarqube 6.7 和 Sonar MsBuild 4.0.2.892。我尝试使用带有脚本的 Jenkins 构建步骤、命令步骤、命令步骤,但没有成功。在经典的 .Net 4.5.2 项目中,它可以工作。

【问题讨论】:

  • 嗨@Greg,您的 SonarQube 服务器上安装了哪个版本的 SonarC#?如果它早于 6.7,.NET Core 分析将失败并出现相同的错误。另请注意,SonarC# 和 SonarQube 在一段时间内有相同的版本,但它们是不同的产品。
  • 嗨!我安装了 Sonar C# 6.7.1 (build 4347)。
  • 一个愚蠢的问题,但是 - 你的项目的语言是什么? C# 还是 VB.NET?另外,会不会是因为某种原因编译失败了?
  • C# .NET 核心。编译成功。使用我的脚本,端到端过程成功。仅当它从 Jenkins 执行时才会失败。
  • 您是在构建解决方案,还是只是在 Jenkins 中构建项目文件 (csproj)?默认情况下,.NET Core 项目在 csproj 中没有 ProjectGuid 属性,您需要为每个项目添加一个具有唯一 Guid 的(它是一个 xml 元素),或者只是将项目添加到 sln。这样,Visual Studio 将在解决方案文件中分配 Guid,但您必须构建解决方案,而不是项目。如果扫描仪找不到项目的 ProjectGuid,它不会生成 ProjectInfo.xml 并失败并出现相同的错误。

标签: jenkins msbuild sonarqube .net-core


【解决方案1】:

Jenkins 以本地系统用户身份运行。我将其更改为普通的 Windows 用户,它成功了。 dotnet build 未使用 Sonarqube 专用目标。 谢谢@Valeri!

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-20
  • 2013-08-31
  • 1970-01-01
  • 2012-09-05
相关资源
最近更新 更多