问题
I'm using Travis CI to run SonarQube Scanner on a C#
project. I've managed to get the scanner to work once but it failed with no obvious reason on the next commit (the commit updated README.md
).
I've tried to clear the build cache, with no success. I've also read about the issue in other programming languages (Java mainly) but no luck so far.
Error log
The specific error is:
Not inside a Git work tree: /home/travis/build/presque-fini
The full error log is below:
34.72s$ mono ./scanner/SonarScanner.MSBuild.exe end -d:sonar.login="tkoen"
SonarScanner for MSBuild 4.9
Using the .NET Framework version of the Scanner for MSBuild
Post-processing started.
WARNING: The following projects do not have a valid ProjectGuid and were not built using a valid solution (.sln) thus will be skipped from analysis...
/home/travis/build/presque-fini/nez/Nez.Portable/Nez.csproj
WARNING: File '/usr/lib/mono/xbuild/MonoGame/v3.0/Assemblies/DesktopGL/x86/SDL2.dll' is not located under the root directory '/home/travis/build/presque-fini' and will not be analyzed.
WARNING: File '/usr/lib/mono/xbuild/MonoGame/v3.0/Assemblies/DesktopGL/x64/SDL2.dll' is not located under the root directory '/home/travis/build/presque-fini' and will not be analyzed.
WARNING: File '/usr/lib/mono/xbuild/MonoGame/v3.0/Assemblies/DesktopGL/x86/soft_oal.dll' is not located under the root directory '/home/travis/build/presque-fini' and will not be analyzed.
WARNING: File '/usr/lib/mono/xbuild/MonoGame/v3.0/Assemblies/DesktopGL/x64/soft_oal.dll' is not located under the root directory '/home/travis/build/presque-fini' and will not be analyzed.
WARNING: File '/usr/lib/mono/xbuild/MonoGame/v3.0/Assemblies/DesktopGL/x86/libSDL2-2.0.so.0' is not located under the root directory '/home/travis/build/presque-fini' and will not be analyzed.
WARNING: File '/usr/lib/mono/xbuild/MonoGame/v3.0/Assemblies/DesktopGL/x64/libSDL2-2.0.so.0' is not located under the root directory '/home/travis/build/presque-fini' and will not be analyzed.
WARNING: File '/usr/lib/mono/xbuild/MonoGame/v3.0/Assemblies/DesktopGL/x86/libopenal.so.1' is not located under the root directory '/home/travis/build/presque-fini' and will not be analyzed.
WARNING: File '/usr/lib/mono/xbuild/MonoGame/v3.0/Assemblies/DesktopGL/x64/libopenal.so.1' is not located under the root directory '/home/travis/build/presque-fini' and will not be analyzed.
WARNING: File '/usr/lib/mono/xbuild/MonoGame/v3.0/Assemblies/DesktopGL/libSDL2-2.0.0.dylib' is not located under the root directory '/home/travis/build/presque-fini' and will not be analyzed.
WARNING: File '/usr/lib/mono/xbuild/MonoGame/v3.0/Assemblies/DesktopGL/libopenal.1.dylib' is not located under the root directory '/home/travis/build/presque-fini' and will not be analyzed.
WARNING: File '/usr/lib/mono/xbuild/MonoGame/v3.0/Assemblies/DesktopGL/MonoGame.Framework.dll.config' is not located under the root directory '/home/travis/build/presque-fini' and will not be analyzed.
The SONAR_SCANNER_HOME environment variable is not required and will be ignored.
Calling the SonarQube Scanner...
INFO: Scanner configuration file: /home/travis/build/presque-fini/presque-game/scanner/sonar-scanner-4.3.0.2102/conf/sonar-scanner.properties
INFO: Project root configuration file: /home/travis/build/presque-fini/presque-game/.sonarqube/out/sonar-project.properties
INFO: SonarScanner 4.3.0.2102
INFO: Java 11.0.2 Oracle Corporation (64-bit)
INFO: Linux 4.15.0-1028-gcp amd64
INFO: User cache: /home/travis/.sonar/cache
INFO: Scanner configuration file: /home/travis/build/presque-fini/presque-game/scanner/sonar-scanner-4.3.0.2102/conf/sonar-scanner.properties
INFO: Project root configuration file: /home/travis/build/presque-fini/presque-game/.sonarqube/out/sonar-project.properties
INFO: Analyzing on SonarCloud
INFO: Default locale: "en_US", source code encoding: "UTF-8" (analysis is platform dependent)
INFO: Load global settings
INFO: Load global settings (done) | time=706ms
INFO: Server id: 1BD809FA-AWHW8ct9-T_TB3XqouNu
INFO: User cache: /home/travis/.sonar/cache
INFO: Load/download plugins
INFO: Load plugins index
INFO: Load plugins index (done) | time=165ms
INFO: Load/download plugins (done) | time=22322ms
INFO: Loaded core extensions: developer-scanner
INFO: Process project properties
INFO: Execute project builders
INFO: Execute project builders (done) | time=49ms
INFO: Project key: presque-fini_presque-game
INFO: Base dir: /home/travis/build/presque-fini
INFO: Working dir: /home/travis/build/presque-fini/presque-game/.sonarqube/out/.sonar
INFO: Load project settings for component key: 'presque-fini_presque-game'
INFO: Load project settings for component key: 'presque-fini_presque-game' (done) | time=227ms
INFO: Found an active CI vendor: 'TravisCI'
INFO: Load project branches
INFO: Load project branches (done) | time=136ms
INFO: Check ALM binding of project 'presque-fini_presque-game'
INFO: Detected project binding: BOUND
INFO: Check ALM binding of project 'presque-fini_presque-game' (done) | time=122ms
INFO: Load project pull requests
INFO: Load project pull requests (done) | time=141ms
INFO: Load branch configuration
INFO: Load branch configuration (done) | time=4ms
INFO: Load quality profiles
INFO: Load quality profiles (done) | time=156ms
INFO: Load active rules
INFO: Load active rules (done) | time=3676ms
INFO: Organization key: presque-fini
INFO: Indexing files...
INFO: Project configuration:
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
INFO: Total time: 33.193s
INFO: Final Memory: 7M/27M
INFO: ------------------------------------------------------------------------
ERROR: Error during SonarScanner execution
ERROR: Not inside a Git work tree: /home/travis/build/presque-fini
ERROR:
The SonarQube Scanner did not complete successfully
13:29:46.773 Post-processing failed. Exit code: 1
The command "mono ./scanner/SonarScanner.MSBuild.exe end -d:sonar.login="token"" exited with 1.
System config
- CI: Travis (you can browse the full build here: https://travis-ci.com/github/presque-fini/presque-game/builds/172666297)
- OS: Ubuntu 16.04.6 LTS
- Git 2.21.0
- Versions used:
sonar-scanner-msbuild-4.9.0.17385-net46
- Scanner command:
mono ./scanner/SonarScanner.MSBuild.exe end -d:sonar.login="token"
- Project hosted on Github (https://github.com/presque-fini/presque-game)
回答1:
What's the problem?
The problem is caused by the fact that when Travis clones your project, it clones it in a sub-directory named after the repo name (presque-game
in your case). This will give you the following structure:
organization-name/repo-name
When you launch the analysis, it starts by default in the organization-name
folder and not in the repo-name
sub-folder. Because organization-name
is not a git repo, Sonarcloud fails.
How can I solve it?
To resolve this problem, you need to set the analysis property sonar.projectBaseDir
:
-d:sonar.projectBaseDir="repo-name/"
This will give you this full command (the path is absolute, just to be sure, but I guess a relative path will work too):
mono ./scanner/SonarScanner.MSBuild.exe begin -k:"presque-fini_presque-game" -o:"presque-fini" -d:sonar.login="token" -d:sonar.projectBaseDir="/home/travis/build/presque-fini/presque-game/"
References:
- SonarCloud docs, Alternate analysis section:
If the files to be analyzed are not in the directory where the analysis starts from, use the sonar.projectBaseDir property to move analysis to a different directory.
- SonarQube community question : SonarQube Scanner fails with “Not inside a git worktree” error
来源:https://stackoverflow.com/questions/62536527/sonarqube-scanner-fails-with-not-inside-a-git-worktree-error