版本:
sonarqube7.5
hudson 3.3.3
mysql 5.6
hudson:
已经安装完成。
mysql 5.6:
使用已有的mysql数据库服务,创建数据库及用户名密码
sonarqube7.5:
下载安装包,官网。
解压,上传到服务器。需要执行的文件要赋权
修改/***/****/sonarqube-7.5/conf/sonar.properties配置文件中数据库连接信息。数据库-sonarqube,用户名sonar,密码sonar
sonar.jdbc.url=jdbc:mysql:/*****************/sonarqube?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
lOverReadOnly=false
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.sorceEncoding=UTF-8
sonar.login=admin
sonar.password=admin
启动sonar,sh sonar.sh start
启动成功后,程序会自动连接数据库并初始化。
访问http://*********ip:9000,可以看到sonar页面,说明安装成功。
在hudson中调用:
android项目:android使用gradle构建,我们使用的是gradle3.5.1,首先在gradle目录中执行gradle wrapper,会生成gradlew文件。修改系统环境变量,使其可以直接在其他目录下直接执行。
android项目之前是不用上传gradle目录的,现在需要上传该目录及其下文件。
在sonar的项目管理页面新增项目,根据系统提示生成访问令牌,然后选择项目语言及构建技术,右侧会给出对应的调用方法。
其中build.gradle中添加的声明,需要添加在buildscript之后。
来到hudson页面,找到对应的项目构建工程,在设置页面,添加构建步骤(add build step),新增一个invoke gradle script步骤,选择use gradle wrapper,点选make gradlew wrapper选项,否则无法执行gradlew。在switches一栏填入上图中的构建命令:sonarqube -Dsonar.host.url=http://********:9000 -Dsonar.login=***************令牌*** -Dsonar.projectName=dev-maps-pipe-app
配置完成后,马上构建即可在构建过程中调用sonar进行检查。
maven构建与gradle略有不同,不需要添加声明,直接在命令中引用即可,在对应项目中的invoke maven 3步骤中,goals一栏添加命令参数sonar:sonar \
-Dsonar.host.url=http://***IP****:9000 \
-Dsonar.login=********令牌********
需要注意一点的是,构建的过程中可能出现某个文件不能被索引两次的错误( File app/src/main/res/layouts/home/layout/activity_dashboard.xml can't be indexed twice. Please check that inclusion/exclusion patterns produce disjoint sets for main and test files’)。此时需要看一下该文件是否需要被检查,我们在配置的过程中出现此错误的几个文件是xml和png文件,不需要进行检查,于是在sonar设置中将其排除。在sonar页面中 “配置--排除”页面找到排除的源文件和排除的测试文件,添加上述文件的路径,这里只需要在src开始往后填。
项目检查结果: