我有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
并不聪明?)
答案 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