我们有一个 dot net 应用程序,我们使用 Jenkinsfile 进行构建。 Jenkinsfile 对具有 dockerfile 的整个应用程序执行 docker build,并使用以下声纳分析说明:-
RUN if("$Env:SKIP_SQ" -eq 'NO') { "C:\build\sonar-scanner-msbuild-4.6.2.2108-net46\SonarQube.Scanner.MSBuild.exe" begin /k:"***" /d:sonar.exclusions=**/Foundation/Themes/code/Scripts/**,**/Project/***/code/SiteJS/Plugins/**,**/Project/***/code/SiteJS/Rates/** }
RUN msbuild .\***.sln /p:DeployOnBuild=True /p:Configuration=Release /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:PublishUrl=C:\out\website /m
RUN if("$Env:SKIP_SQ" -eq 'NO') { "C:\build\sonar-scanner-msbuild-4.6.2.2108-net46\SonarQube.Scanner.MSBuild.exe" end }
dockerfile 中的第一个 RUN 指令开始声纳分析,如下所示:- https://docs.sonarqube.org/latest/analyzing-source-code/scanners/sonarscanner-for-dotnet/
我们可以在第一个 RUN 指令中传递如下属性:-
sonar.qualitygate.wait=true
所以就像:-
RUN if("$Env:SKIP_SQ" -eq 'NO') { "C:\build\sonar-scanner-msbuild-4.6.2.2108-net46\SonarQube.Scanner.MSBuild.exe" begin /k:"***" /d:sonar.qualitygate.wait=true /d:sonar.exclusions=**/Foundation/Themes/code/Scripts/**,**/Project/***/code/SiteJS/Plugins/**,**/Project/***/code/SiteJS/Rates/** }
这行得通吗,我们如何在这里调用质量门条件,以便在不满足检查时构建失败。