如何解决SonarScanner for .NET 在 GitHub Actions (.NET 5)
我正在尝试在我的 GitHub Actions 构建中使用 SonarCloud 来分析我的代码并为我的单元测试生成代码覆盖率。我正在 Visual Studio 2019 中开发 .NET 5 解决方案。
起初,我正在尝试 SonarCloud GitHub 操作 (https://github.com/SonarSource/sonarcloud-github-action),但日志告诉我使用 SonarScanner for .NET。 我已经按照文档设置了我的工作流程文件:https://docs.sonarqube.org/latest/analysis/scan/sonarscanner-for-msbuild/。 我在工作流中使用了 dotnet-sonarscanner 全局工具。
工作流程如下所示:
jobs:
BuildLinux:
runs-on: ubuntu-latest
steps:
- name: 'Checkout Github Action'
uses: actions/checkout@master
with:
# disabling shallow clone is recommended for improving relevancy of reporting
fetch-depth: 0
- name: Setup dotnet
uses: actions/setup-dotnet@v1
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
- name: Install Sonar global tool
run: dotnet tool install --global dotnet-sonarscanner
- name: Begin Sonar scan
run: dotnet sonarscanner begin /k:"MySonarProject" /d:sonar.login=${{ secrets.soNAR_TOKEN }}
- name: Build and run unit tests
run: |
cd src
dotnet restore "MySolution.sln"
cd MyAPI
dotnet build --no-restore
cd -
cd MyApiUnitTests
dotnet build --no-restore
dotnet test --no-build --no-restore --verbosity normal -p:CollectCoverage=true -p:CoverletoutputFormat=opencover
- name: End Sonar scan
run: dotnet sonarscanner end /d:sonar.login=${{ secrets.soNAR_TOKEN }}
运行此版本时,在“开始声纳扫描”步骤中出现以下错误。全局工具安装成功。
SonarScanner for MSBuild 5.2.1
Using the .NET Core version of the Scanner for MSBuild
Pre-processing started.
Preparing working directories...
05:54:44.604 Updating build integration targets...
05:54:44.688 Failed to request and parse 'http://localhost:9000/api/server/version': Connection refused (localhost:9000)
Unhandled exception. System.Net.Http.HttpRequestException: Connection refused (localhost:9000)
---> System.Net.sockets.socketException (111): Connection refused
at System.Net.sockets.socket.Awaitablesocketasynceventargs.ThrowException(SocketError error,CancellationToken cancellationToken)
at System.Net.sockets.socket.Awaitablesocketasynceventargs.System.Threading.Tasks.sources.IValueTaskSource.GetResult(Int16 token)
at System.Net.sockets.socket.<ConnectAsync>g__WaitForConnectWithCancellation|283_0(Awaitablesocketasynceventargs SAEa,ValueTask connectTask,CancellationToken cancellationToken)
at System.Net.Http.httpconnectionPool.DefaultConnectAsync(SocketshttpconnectionContext context,CancellationToken cancellationToken)
at System.Net.Http.ConnectHelper.ConnectAsync(Func`3 callback,DnsEndPoint endPoint,HttpRequestMessage requestMessage,CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Net.Http.ConnectHelper.ConnectAsync(Func`3 callback,CancellationToken cancellationToken)
at System.Net.Http.httpconnectionPool.ConnectAsync(HttpRequestMessage request,Boolean async,CancellationToken cancellationToken)
at System.Net.Http.httpconnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request,CancellationToken cancellationToken)
at System.Net.Http.httpconnectionPool.GethttpconnectionAsync(HttpRequestMessage request,CancellationToken cancellationToken)
at System.Net.Http.httpconnectionPool.SendWithRetryAsync(HttpRequestMessage request,Boolean doRequestAuth,CancellationToken cancellationToken)
at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request,CancellationToken cancellationToken)
at System.Net.Http.HttpClient.SendAsyncCore(HttpRequestMessage request,HttpCompletionoption completionoption,Boolean emitTelemetryStartStop,CancellationToken cancellationToken)
at SonarScanner.MSBuild.PreProcessor.WebClientDownloader.Download(String url,Boolean logPermissionDenied)
at SonarScanner.MSBuild.PreProcessor.sonarWebService.<>c__displayClass18_0.<<DownloadServerVersion>b__0>d.MoveNext()
--- End of stack trace from prevIoUs location ---
at SonarScanner.MSBuild.PreProcessor.sonarWebService.DoLogExceptions[T](Func`1 op,String url)
at SonarScanner.MSBuild.PreProcessor.sonarWebService.DownloadServerVersion()
at SonarScanner.MSBuild.PreProcessor.sonarWebService.GetServerVersion()
at SonarScanner.MSBuild.PreProcessor.sonarWebService.WarnIfSonarQubeVersionIsDeprecated()
at SonarScanner.MSBuild.PreProcessor.TeamBuildPreProcessor.DoExecute(ProcessedArgs localSettings)
at SonarScanner.MSBuild.PreProcessor.TeamBuildPreProcessor.Execute(String[] args)
at SonarScanner.MSBuild.BootstrapperClass.PreProcess()
at SonarScanner.MSBuild.BootstrapperClass.Execute()
at SonarScanner.MSBuild.Program.Execute(String[] args,ILogger logger)
at SonarScanner.MSBuild.Program.Execute(String[] args)
at SonarScanner.MSBuild.Program.Main(String[] args)
at SonarScanner.MSBuild.Program.<Main>(String[] args)
构建在 ubuntu-latest 上运行,我也尝试过 windows-latest。结果一样。
我该如何解决这个问题?我可以首先在 GitHub Actions 中像这样使用 Sonar 扫描器吗?
解决方法
日志显示它尝试连接到 SonarQube 的本地实例,而不是 SonarCloud。您需要配置其他参数以连接到 SonarCloud:/d:sonar.host.url=https://sonarcloud.io
和 /o:<your organization>
。请参阅 SonarCloud version of task documentation 和 SonarCloud required parameters。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。