我们有一个使用bash脚本从Jenkins运行SonarQube的构建,我们希望将测试结果返回到Jenkins管道中,这样我们就可以防止失败时的合并。我们正在使用Jenkins的v2,但它是一个不支持SonarQube Jenkins插件的旧版本,升级Jenkins不是我们在sprint中可以完成的事情。
有没有一种方法可以用我们已有的东西来获得结果来控制我们的管道?目前,这就是我们在OpenShift中从Jenkins运行SonarQube的方式。
dotnet build
~/.dotnet/tools/coverlet "./bin/Debug/netcoreapp3.1/AppTests.dll" --target "dotnet" --targetargs 'test . --no-build --logger "trx;LogFileName=TestResults.trx" --logger "xunit;LogFileName=TestResults.xml" --results-directory ../BuildReports/UnitTests' -f opencover -o ./BuildReports/Coverage/coverage
dotnet build-server shutdown
~/.dotnet/tools/dotnet-sonarscanner begin /k:${APP_NAME} /n:${APP_NAME} /d:sonar.host.url=${SONAR_URL} /d:sonar.cs.opencover.reportsPaths="./BuildReports/Coverage/coverage.opencover.xml" /d:sonar.exclusions="**/Migrations/*" /d:sonar.coverage.exclusions="**Tests*.cs","**/Migrations/*","**/Program.cs" /d:sonar.cpd.exclusions="**/Migrations/*" /d:sonar.cs.vstest.reportsPaths="./BuildReports/UnitTests/TestResults.trx" /d:sonar.cs.nunit.reportsPaths="./BuildReports/UnitTests/TestResults.xml"
dotnet build -v n
~/.dotnet/tools/dotnet-sonarscanner end
dotnet build-server shutdown发布于 2020-07-17 00:11:35
在SonarQube服务器上安装Build Breaker插件。并为您正在扫描的项目启用它--为此,请转到SonarQube服务器上的“项目设置”。为此,您可能需要服务器级别和项目级别的管理权限。
现在,Sonar Scanner将在执行代码分析后检查质量门状态。如果质量门失败,扫描器将返回一个非零状态代码,该代码可用于将构建标记为“失败”。
https://github.com/adnovum/sonar-build-breaker#sonarqube-build-breaker-plugin
如果您无法控制在SonarQube服务器上安装了什么,那么您可以编写一个bash脚本,使用curl命令访问您的SonarQube服务器的web API,首先查看SonarQube服务器是否已经处理了分析报告,然后查看刚刚结束的代码分析的质量关口状态。
有关web API的文档,请参阅http://<sonarqube-server-host>/web_api。
https://stackoverflow.com/questions/62921714
复制相似问题