dotnet sonarscanner在Docker构建期间失败

lhcgjxsq  于 2023-03-17  发布在  Docker
关注(0)|答案(2)|浏览(150)

我正在azure DevOps中为.net核心应用程序实现一个Docker容器内的声纳扫描仪解决方案。
目前,sonarqube安装在AKS集群的sonarqube命名空间中,而我们的. net应用程序被容器化在同一集群的不同命名空间中。**临时分析目录(通常是.sonarqube)不存在。“开始”步骤可能没有执行。**是否有实现这种逻辑的示例或工作Docker文件?我尝试按照this博客文章中描述的步骤操作,但结果是相同的。
下面是我的Dockerfile:

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src

RUN apt-get update && apt-get install -y openjdk-11-jdk
RUN dotnet tool install --global dotnet-sonarscanner
RUN dotnet tool install --global dotnet-reportgenerator-globaltool
RUN dotnet tool install --global coverlet.console

## Set the dotnet tools folder in the PATH env variable
ENV PATH="$PATH:/root/.dotnet/tools"

## Start scanner
RUN dotnet sonarscanner begin \
  /k:"my-token" \
  /o:"my-org" \
  /d:sonar.host.url="sonar-host" \
  /d:sonar.login="sonar-token" \
  /d:sonar.cs.opencover.reportsPaths=/coverage.opencover.xml

COPY my-project/*.csproj ./my-project/

COPY . .
WORKDIR /src/my-project
RUN dotnet restore
RUN dotnet build -c Release -o /app/build --no-restore
RUN dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:CoverletOutput="/coverage"

## Stop scanner
RUN dotnet sonarscanner end /d:sonar.login="sonar-token"

FROM build AS publish
WORKDIR /src/my-project
RUN dotnet publish -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "my-project.dll"]
pkwftd7m

pkwftd7m1#

我认为您的问题可能是在运行sonarscanner begin * 之后 * 运行dotnet restore。如果您重新安排这些步骤,应该可以解决。

xdyibdwo

xdyibdwo2#

找到这个:https://community.sonarsource.com/t/sonarqube-is-not-showing-msbuild-analysis/44455/7
这就是对我起作用的原因:
开始、构建和结束阶段都需要从同一目录运行。2看起来你的构建脚本在构建和结束之间改变了目录。
请小心使用Dockerfile中的WORKDIR语句,并确保所有这3个命令都在同一目录中执行。

相关问题