如何在构建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配置一致。

99c5710a5925d37c6cb0ee49729e4ce5.png

项目名称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“

d5949f7e0069ad6966c66884eed228ea.png

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值