克隆到子目录时的SonarQube Jenkins / git集成

时间:2018-03-13 13:20:33

标签: git jenkins sonarqube sonarqube-scan

我有Jenkins的git插件克隆我的存储库到WORKSPACE的子目录。因此,我设置了

sonar.sources=my/subdir

然而,上述设置似乎没有通知SCM检测;并设置

sonar.scm.provider=git

...产率:

ERROR: Not inside a Git work tree: /path/to/my/workspace

如何通知SonarQube的git插件我的源位置? (为什么使用sonar.sources并不聪明?)

2 个答案:

答案 0 :(得分:0)

为此奋斗了整整5个小时。您应该分享对我有用的东西。

使子目录名称与存储库名称相同,然后从那里运行mvn sonar命令

SonarQube使用Eclipse jgit中的Java库进行git工作,这将检查sonar.projectBaseDir是否具有.git文件夹以及其他一些git文件/文件夹。

J.kins Git SCM克隆时,N.B将回购的内容直接放在工作空间中,而不会创建目录

设置: SonarQube 7.7 Jenkins声明式管道

示例代码:

checkout([$class: 'GitSCM', branches: [[name: branchName]], 
                doGenerateSubmoduleConfigurations: false, extensions: [ [$class: 'RelativeTargetDirectory', relativeTargetDir: "${env.artifactId}"]], 
                submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'credts', url:  'http://server.com/'+"${env.artifactId}"+'.git']]])


                    withSonarQubeEnv('Sonar Dev') {
                    sh 'cd ' + "${env.artifactId}" + ' && mvn  -U clean package sonar:sonar '
                }

答案 1 :(得分:0)

如果代码位于子目录中,则必须设置以下属性

sonar.projectBaseDir

例如,如果您的代码位于mycodedir中,那么您会这样做

-D"sonar.projectBaseDir=${WORKSPACE}/mycodedir"

执行此操作后,您可以将源和测试参数更改为上述目录的引用,例如

如果您在mycodedir / mysources中具有源代码,而在mycodedir / tests中具有测试

sonar.sources=./mysources
sonar.tests=./tests