Azure Devops运行SonarCloud Analysis for .Net项目

jm81lzqq  于 2023-11-20  发布在  .NET
关注(0)|答案(1)|浏览(163)

我有一个.net核心项目的管道,我试图使用SonarCloud进行代码分析。我下面的管道由托管代理运行。它抱怨Java_Home。我如何解决这个问题?
误差
错误代码:在您的环境中找不到JAVA_HOME,并且PATH中没有Java可执行文件。请在您的环境中设置JAVA_HOME变量以匹配Java安装的位置,或将“java.exe”添加到PATH中
YAML

  1. pool:
  2. name: company-pool
  3. variables:
  4. BuildConfiguration: 'Release'
  5. trigger:
  6. branches:
  7. include:
  8. - main
  9. steps:
  10. - task: UseDotNet@2
  11. displayName: 'Use .NET 6.x'
  12. inputs:
  13. version: 6.x
  14. includePreviewVersions: true
  15. - task: SonarCloudPrepare@1
  16. displayName: 'Prepare analysis on SonarCloud'
  17. inputs:
  18. SonarCloud: SonarCloud
  19. organization: myorg
  20. projectKey: 'mysummary'
  21. projectName: 'myproject'
  22. - task: DotNetCoreCLI@2
  23. displayName: 'dotnet restore'
  24. inputs:
  25. command: restore
  26. projects: |
  27. *src/Comapny.Web/Comapny.Web.csproj
  28. - task: DotNetCoreCLI@2
  29. displayName: 'Build projects'
  30. inputs:
  31. projects: |
  32. *src/Comapny.Web/Comapny.Web.csproj
  33. arguments: '--configuration $(BuildConfiguration)'
  34. - task: SonarCloudAnalyze@1
  35. displayName: 'Run Code Analysis'
  36. inputs:
  37. jdkversion: 'JAVA_HOME'
  38. - task: SonarCloudPublish@1
  39. displayName: 'Publish Quality Gate Result'

字符串

ig9co6j1

ig9co6j11#

根据错误消息,问题的原因是您没有在代理计算机中配置JAVA环境。
要解决这个问题,您可以JavaToolInstaller@0来配置Java环境。但由于您的本地机器上没有预装的Java版本,因此需要添加下载步骤。
下面是一个示例:
Linux计算机:

  1. steps:
  2. - bash: 'wget --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz '
  3. displayName: 'Bash Script'
  4. - task: JavaToolInstaller@0
  5. displayName: 'Use Java 21'
  6. inputs:
  7. versionSpec: 21
  8. jdkArchitectureOption: x64
  9. jdkSourceOption: LocalDirectory
  10. jdkFile: '$(build.sourcesdirectory)/jdk-21_linux-x64_bin.tar.gz'
  11. jdkDestinationDirectory: '$(agent.toolsDirectory)/jdk21'
  12. - task: UseDotNet@2
  13. displayName: 'Use .NET 6.x'
  14. inputs:
  15. version: 6.x
  16. includePreviewVersions: true
  17. - task: SonarCloudPrepare@1
  18. displayName: 'Prepare analysis on SonarCloud'
  19. inputs:
  20. SonarCloud: SonarCloud
  21. organization: myorg
  22. projectKey: 'mysummary'
  23. projectName: 'myproject'

字符串
Windows计算机:

  1. steps:
  2. - powershell: |
  3. $source = "https://download.oracle.com/java/21/latest/jdk-21_windows-x64_bin.zip"
  4. $destination = "$(build.sourcesdirectory)\jdk-21_windows-x64_bin.zip"
  5. $client = new-object System.Net.WebClient
  6. $cookie = "oraclelicense=accept-securebackup-cookie"
  7. $client.Headers.Add([System.Net.HttpRequestHeader]::Cookie, $cookie)
  8. $client.downloadFile($source, $destination)
  9. displayName: 'PowerShell Script'
  10. - task: JavaToolInstaller@0
  11. displayName: 'Use Java 21'
  12. inputs:
  13. versionSpec: 21
  14. jdkArchitectureOption: x64
  15. jdkSourceOption: LocalDirectory
  16. jdkFile: '$(build.sourcesdirectory)\jdk-21_windows-x64_bin.zip'
  17. jdkDestinationDirectory: '$(agent.toolsDirectory)/jdk21'
  18. - task: UseDotNet@2
  19. displayName: 'Use .NET 6.x'
  20. inputs:
  21. version: 6.x
  22. includePreviewVersions: true
  23. - task: SonarCloudPrepare@1
  24. displayName: 'Prepare analysis on SonarCloud'
  25. inputs:
  26. SonarCloud: SonarCloud
  27. organization: myorg
  28. projectKey: 'mysummary'
  29. projectName: 'myproject'


然后在自托管代理上设置JAVA_HOME。

展开查看全部

相关问题