环境准备:sonar,jenkins;这两个的安装就不多说了,查找我以前的文章也找得到。
1. 新建一个自由风格的项目
2. 源码选择无(此处为演示,项目也在我本地,因此选择无)
3. 构建->Execute SonarQube Scanner;然后填写项目key,名称,以及要分析的项目路径,项目主要语言等一系列信息(具体情况具体填写)
sonar.projectKey=django_restful
sonar.projectName=django_restful
sonar.language=py
sonar.sources=$WORKSPACE
4. 保存,点击立即构建(此处我只是为了扫描代码,因此并未执行其他的部署等一系列命令)
5. 在SonarQube查看结果
6. 注意事项:
1. sonar.sources
分析:这个关键词的意思是要分析的项目所在路径,最初我的项目是放在/project下的,于是我的sonar.sources=/project;可是在构建后发现sonar并未拉取到代码,没有任何分析结果
原因:后来经过一系列的排查与查找资料得知,jenkins构建运行时会去自己默认的工作空间找代码,也就是说不管是git或者svn其实拉取的代码是放在默认的工作空间,再将这些代码部署到响应的服务器或者做相应的操作;那么如果你是本地的项目,这个项目也要在工作空间,jenkins才找得到。每新建一个项目就会在工作空间有一个文件夹(比如项目名称是:django_restful;那么在这个项目的工作空间就是:/root/.jenkins/workspace/django_restful)
解决方案:所以这里的sonar.sources是相对于工作空间的目录(sonar.sources=$WORKSPACE),将项目移到/root/.jenkins/workspace/django_restful下就可以
2.SCM开启
构建时在控制台看到有报错,未开启SCM
解决方案:在sonar开启SCM
3. 系统配置和全局工具配置
下载了SonarQube插件后,要在系统配置中配置SonarQube servers,不然jenkins怎么知道要往哪里发送报告
SonarQube其实是用SonarQube Scanner来扫描代码的,因此也必须配置SonarQube Scanner的位置
- 可以提前自己安装好scanner,全局工具配置->SonarQube Scanner,填写执行路径(这种方式不勾选‘自动安装’)
2. 自动安装,全局工具配置->SonarQube Scanner,勾选自动安装,选择想要下载的扫描器版本