我正在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"]
2条答案
按热度按时间pkwftd7m1#
我认为您的问题可能是在运行
sonarscanner begin
* 之后 * 运行dotnet restore
。如果您重新安排这些步骤,应该可以解决。xdyibdwo2#
找到这个:https://community.sonarsource.com/t/sonarqube-is-not-showing-msbuild-analysis/44455/7
这就是对我起作用的原因:
开始、构建和结束阶段都需要从同一目录运行。2看起来你的构建脚本在构建和结束之间改变了目录。
请小心使用Dockerfile中的WORKDIR语句,并确保所有这3个命令都在同一目录中执行。