如何在声纳图像中包含声纳扫描仪

时间:2019-05-28 20:12:14

标签: docker .net-core containers test-coverage sonarscanner

我有一个dotnet映像,用作Jenkins管道的代理。现在,我想在图像中包括声纳扫描仪,以便可以进行分析并查看覆盖范围是否良好。如果覆盖范围不好,则构建将失败。如何在我的图像中包含声纳扫描仪。

我尝试在dotnet映像的Dockerfile中包含skilldlabs /声纳扫描仪。但是当我运行容器时,它直接执行了声纳立方体命令,但由于使用了默认声纳地址而失败。

下面是我当前的Dockerfile

FROM microsoft/dotnet:2.1-sdk
FROM skilldlabs/sonar-scanner:3.3

COPY some-ca.crt /usr/local/share/ca-certificates
COPY NuGet.Config /build/.nuget/NuGet/

VOLUME [ "/build/sources" ]

WORKDIR /build/sources

当我跑步时:

docker run --name sonar -it sonar

INFO:扫描仪配置文件:/root/sonar-scanner-3.3.0.1492-linux/conf/sonar-scanner.properties

INFO:项目根配置文件:NONE

INFO:SonarQube扫描仪3.3.0.1492

INFO:Java 1.8.0_191 Oracle Corporation(64位)

信息:Linux 4.9.125-linuxkit amd64

INFO:用户缓存:/root/.sonar/cache

错误:无法访问SonarQube服务器[http://sonarqube:9000]

INFO:--------------------------------------------- ---------------------------

信息:执行失败

INFO:--------------------------------------------- ---------------------------

信息:总时间:5.433秒

INFO:最终内存:3M / 39M

INFO:--------------------------------------------- ---------------------------

错误:SonarQube扫描仪执行期间出错

错误:无法执行SonarQube

错误:由以下原因引起:无法从服务器获取引导索引

错误:原因:sonarqube:再试一次

错误:

错误:使用-X开关重新运行SonarQube Scanner以启用完整调试 记录。

如何告诉容器为声纳扫描仪提供配置?

1 个答案:

答案 0 :(得分:0)

我使用以下命令安装了dotnet-sonarscanner,而不是在我的图像中使用声纳扫描仪图像

dotnet tool install -g dotnet-sonarscanner

我必须通过将以下内容添加到我的单元测试项目的.csproj文件中来为我的单元测试项目安装一个“ coverlet”软件包。

<PackageReference Include="coverlet.msbuild" Version="2.6.1">
  <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
  <PrivateAssets>all</PrivateAssets>
</PackageReference>

现在,每当我要发送覆盖率结果的声纳波时,我都会在命令下方运行以生成覆盖率文件。

dotnet test ./UnitTests/UnitTests.csproj /p:CollectCoverage=true /p:CoverletOutputFormat=opencover

以上命令将在项目文件夹中生成coverage.opencover.xml文件。

现在使用以下命令发送报道

dotnet sonarscanner begin /k:"yourprojectkey" /d:sonar.host.url=https://yoursonarqubedomain.com /d:sonar.cs.opencover.reportsPaths="./UnitTests/coverage.opencover.xml" /d:sonar.coverage.exclusions="**Tests*.cs"
dotnet build
dotnet sonarscanner end

您可以使用/d:

设置声纳扫描仪属性,例如报告位置和URL等。