如何在构建docker镜像时执行SonarQube扫描.NET Core应用
Posted dotNET跨平台
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在构建docker镜像时执行SonarQube扫描.NET Core应用相关的知识,希望对你有一定的参考价值。
前言
SonarQube是一款静态代码质量分析工具,它常用于检测代码中的Bug、漏洞和代码异味,并且能够集成在IDE、Jenkins、Git等服务中,方便随时查看代码质量分析报告。
一般情况下,我们在Jenkins管道中配置SonarQube,在编译过程时执行扫描。
在本文中,我们将介绍不使用Jenkins,通过编写Dockerfile,以便在构建docker镜像时,同时执行SonarQube代码扫描。
Dockerfile
我们把Dockerfile分成多个步骤,下面来一步步讲解:
1.定义编译环境
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build-env
WORKDIR /app
将编译环境和最后的运行环境分开。
2.定义SonarQube参数
ENV SONAR_URL "http://xxx:9000"
ENV SONAR_TOKEN xxx
ENV SONAR_PROJECT xxx
参数包含SonarQube服务器地址和Token,这个和Jenkins配置一致。
项目名称SONAR_PROJECT
对应SonarQube服务器上的配置。
3.安装Java
RUN apt-get update && apt-get install -y openjdk-11-jre
这是运行SonarQube必须的。
4.安装dotnet命令行工具
RUN dotnet tool install --global dotnet-sonarscanner --version 5.3.1
ENV PATH="$PATH:/root/.dotnet/tools"
这是SonarQube扫描.NET Core程序必须的。
5.启动扫描
RUN dotnet sonarscanner begin \\
/k:"$SONAR_PROJECT" \\
/d:sonar.host.url="$SONAR_URL" \\
/d:sonar.login="$SONAR_TOKEN"
dotnet-sonarscanner详细参数可参见:https://docs.sonarqube.org/latest/analysis/scan/sonarscanner-for-msbuild/
6.编译应用
COPY *.csproj .
RUN dotnet restore
COPY . .
RUN dotnet publish --output /publish/
复制文件,恢复Nuget包,编译应用程序。
7.结束扫描
RUN dotnet sonarscanner end /d:sonar.login="$SONAR_TOKEN"
结束扫码并上传SonarQube扫描结果。
8.运行应用
FROM mcr.microsoft.com/dotnet/aspnet:5.0
WORKDIR /app
COPY --from=build-env /publish .
ENTRYPOINT ["dotnet", "xxx.dll"]
从SDK镜像复制编译输出,然后执行运行命令。
结论
最后,只需执行docker build命令即可生成镜像,并在构建过程中运行SonarQube扫描:
docker build .
想了解更多内容,请关注我的个人公众号”My IO“
以上是关于如何在构建docker镜像时执行SonarQube扫描.NET Core应用的主要内容,如果未能解决你的问题,请参考以下文章