所有工具的配置和使用都是在centos环境下进行的
前提条件:
1。我已经完成了gitlab和jenkins的集成,实现gitlab执行push操作后,jenkins会触发脚本命令,生成一个以当前时间命名的文件。
2。sonar已经安装完成
如果前两部没有完成,可以看之前的博客流程
首先启动sonar
进入sonar目录
使用非root用户启动sonar
cd /software/sonarqube/bin/linux-x86-64
./sonar.sh start
进入sonar页面和jenkins页面
使用你的ip:端口号
192.168.43.167:9000
192.168.43.167:8080
我主要以free项目为例。
如果没有jenkins没有安装sonar插件的,可以进入插件管理中下载
下载好之后,接下来在jenkins上配置sonar服务端
系统管理->系统设置->sonarqube server
可以随便起一个名字,url就是你的sonar页面url,token需要添加,选择jenkins
类型选择secret text
在secret中输入sonar的token
可以根据url直接获取,然后增加描述jenkins-sonarqube-token
http://192.168.0.107:9000/account/security/
完成之后点击应用,保存
然后在系统管理中选择全局工具配置
配置sonarqube scanner
SONAR_RUNNER_HOME输入你的sonarqube安装路径
点击应用,保存
然后进入free项目
打开配置,在构建部分增加构建步骤
execute sonarqube scanner
然后可以直接输入命令
sonar.projectName=${JOB_NAME} //sonar项目的名称
sonar.projectKey=spring //项目的key必须唯一
sonar.sources=/etc/gitlab/example/spring-boot-pay/ //sonar扫描项目的路径
sonar.java.binaries=/etc/gitlab/example/spring-boot-pay/target/classes
sonar.projectBaseDir=/etc/gitlab/example/spring-boot-pay/
完成后项目会出现sonar的标志
我们可以push以下察看是否完成
我直接在jankins关联的gitlab项目中的wbehook中尝试
gitlab出现200表示push成功
jenkins开始执行,我们查看以下控制台信息
进入sonar
成功!
也可以通git命令在项目目录下执行push,一样的效果
在这里面有几个坑
如果发现push之后,sonar页面只有项目名称没有任何代码信息,可能就是sonar扫描出错了,可以在jenkins的任务列表中点击任务i里面的控制台输出查看错误信息
1。首先是我的项目没有在jenkins路径下,所以需要配置sonar.projectBaseDir为你的项目路径
2。sonar扫描报错Please provide compiled classes of your project with sonar.java.binaries property
于是在jenkins构建配置中加上sonar.java.binaries=/etc/gitlab/example/spring-boot-pay/target/classes
如果项目目录下没有target文件,需要执行mvn install (后面的错误大部分都是mvn install 时的错误)
3。软件包xxxxx不存在解决办法。解决方法百度到这个包所在的jar包,然后在修改项目的pom文件
我加双星号之间的部分
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<source>1.5</source>
<target>1.5</target>
<encoding>UTF-8</encoding>
************************************
<compilerArguments>
<verbose/>
<bootclasspath>${java.home}/lib/rt.jar;${java.home}/lib/jce.jar</bootclasspath>
</compilerArguments>
************************************************
</configuration>
</plugin>
4。在类路径或引导类路径中找不到程序包 java.lang。解决方法:
这个其实就是我之前没有配置java_home,所以上面的pom文件中maven插件里面的java_home识别不到。
vim etc/profile //添加以下代码
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.144-0.b01.el7_4.x86_64
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH