0

我正在尝试使用带有nosinovacao/dotnet-sonar imagedocker-compose的 docker 使用 SonnarScanner for .NET 进行代码分析,但是,当我使用docker run相同的参数时,我无法使用它来构建项目。

该解决方案由几个子解决方案组成,似乎 MS Build 在使用时构建整个解决方案存在一些问题docker-compose,因为我遇到了MSBUILD : error MSB1008: Only one project can be specified.错误。

使用时docker run会显示一条消息Determining projects to restore...,然后正确构建解决方案。

我不明白问题出在哪里,因为我使用完全相同的图像和参数。

这是我的工作docker run命令:

docker run -it --rm \
   --network=host \
    -v /Developer/MyProject/:/source \
    nosinovacao/dotnet-sonar:latest \
    bash -c \
        "cd source \
        && dotnet /sonar-scanner/SonarScanner.MSBuild.dll begin \
        /k:MyProjectKey /name:MyProject /version:v1.2.3 \
        /d:sonar.host.url="http://localhost:9000/" \
        && dotnet build MyProject.sln -c Release \
        && dotnet /sonar-scanner/SonarScanner.MSBuild.dll end"

docker-compose

version: "3.8"
services:
  dotnetscanner:
    entrypoint: /bin/bash
    command: -c "
        cd source 
        && dotnet /sonar-scanner/SonarScanner.MSBuild.dll begin 
        /k:MyProjectKey /name:MyProject /version:v1.2.3 
        /d:sonar.host.url="http://localhost:9000/"
        && dotnet build MyProject.sln -c Release \
        && dotnet /sonar-scanner/SonarScanner.MSBuild.dll end"
    image: nosinovacao/dotnet-sonar:latest
    volumes:
      - "/Developer/MyProject/:/source"
    network_mode: host

泊坞窗图像使用SonarScanner for MSBuild 5.0.4MSBuild version 16.8.3+39993bd9d for .NET

我该怎么做才能使 SonarScanner 使用docker-compose

提前致谢。

编辑:似乎传递参数有问题,当我明确定义不存在的项目时,docker-compose我得到:

dotnetscanner_1  | MSBUILD : error MSB1008: Only one project can be specified.
dotnetscanner_1  | Switch:  

当我对错误消息中docker run的is not null 执行相同操作时:Switch:

MSBUILD : error MSB1009: Project file does not exist.
Switch: NonExistingProject.csproj
4

1 回答 1

0

事实证明,多行参数导致了问题。

要解决此问题,可以将传递command参数作为单行或使用以下语法:

version: "3.8"
services:
  dotnetscanner:
    command: >
     sh -c "cd source && dotnet /sonar-scanner/SonarScanner.MSBuild.dll begin /k:ProjectKey /name:Project /version:v1.2.2 
     /d:sonar.host.url="http://localhost:9000/" 
     && dotnet build -c Release  
     && dotnet /sonar-scanner/SonarScanner.MSBuild.dll end"
    image: nosinovacao/dotnet-sonar:latest
    volumes:
      - "/Project:/source"
    network_mode: host
于 2021-02-06T16:51:12.510 回答