如何在构建docker镜像时执行SonarQube扫描.NET Core应用
前言
SonarQube是一款靜態(tài)代碼質(zhì)量分析工具,它常用于檢測代碼中的Bug、漏洞和代碼異味,并且能夠集成在IDE、Jenkins、Git等服務(wù)中,方便隨時查看代碼質(zhì)量分析報告。
一般情況下,我們在Jenkins管道中配置SonarQube,在編譯過程時執(zhí)行掃描。
在本文中,我們將介紹不使用Jenkins,通過編寫Dockerfile,以便在構(gòu)建docker鏡像時,同時執(zhí)行SonarQube代碼掃描。
Dockerfile
我們把Dockerfile分成多個步驟,下面來一步步講解:
1.定義編譯環(huán)境
FROM?mcr.microsoft.com/dotnet/sdk:5.0?AS?build-env WORKDIR?/app將編譯環(huán)境和最后的運行環(huán)境分開。
2.定義SonarQube參數(shù)
ENV?SONAR_URL?"http://xxx:9000" ENV?SONAR_TOKEN?xxx ENV?SONAR_PROJECT?xxx參數(shù)包含SonarQube服務(wù)器地址和Token,這個和Jenkins配置一致。
項目名稱SONAR_PROJECT對應(yīng)SonarQube服務(wù)器上的配置。
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.1ENV?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詳細參數(shù)可參見:https://docs.sonarqube.org/latest/analysis/scan/sonarscanner-for-msbuild/
6.編譯應(yīng)用
COPY?*.csproj?. RUN?dotnet?restoreCOPY?.?.RUN?dotnet?publish?--output?/publish/復(fù)制文件,恢復(fù)Nuget包,編譯應(yīng)用程序。
7.結(jié)束掃描
RUN?dotnet?sonarscanner?end?/d:sonar.login="$SONAR_TOKEN"結(jié)束掃碼并上傳SonarQube掃描結(jié)果。
8.運行應(yīng)用
FROM?mcr.microsoft.com/dotnet/aspnet:5.0 WORKDIR?/app COPY?--from=build-env?/publish?. ENTRYPOINT?["dotnet",?"xxx.dll"]從SDK鏡像復(fù)制編譯輸出,然后執(zhí)行運行命令。
結(jié)論
最后,只需執(zhí)行docker build命令即可生成鏡像,并在構(gòu)建過程中運行SonarQube掃描:
docker?build?.想了解更多內(nèi)容,請關(guān)注我的個人公眾號”My IO“
總結(jié)
以上是生活随笔為你收集整理的如何在构建docker镜像时执行SonarQube扫描.NET Core应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C# 多个异步方法的异常处理
- 下一篇: 工业互联网的最后一公里