jenkins svn/git sonarqube scanner 代码集成测试

大家好,我是烤鸭:

    今天分享一个代码检测工具sonar,在jenkins集成的时候使用。

环境:

   sonarqube 7.1

   jenkins 2.12x

   sonarqube scanner (官网最新版3.2.0.1227)


1.    jenkins  svn/git 搭建项目

    https://blog.csdn.net/Angry_Mills/article/details/78539826

        

2.    sonarqube 安装

    2.1    下载 SonarQube 7.1

        https://www.sonarqube.org/downloads/

    2.2    解压

mkdir sonar
cd sonar
upzip sonarqube-7.1

    2.3    修改配置文件

    官方文档    :    https://docs.sonarqube.org/display/SONAR/Installing+the+Server

    修改后的配置文件如下:

    配置了mysql和修改了启动端口和es端口。注意mysql必须是5.6+。

# Permissions to create tables, indices and triggers must be granted to JDBC user.
# The schema must be created first.
sonar.jdbc.username=root
sonar.jdbc.password=root123

#----- MySQL 5.6 or greater
# Only InnoDB storage engine is supported (not myISAM).
# Only the bundled driver is supported. It can not be changed.
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false

# Web context. When set, it must start with forward slash (for example /sonarqube).
# TCP port for incoming HTTP connections. Default value is 9000.
sonar.web.port=9202

# Elasticsearch port. Default is 9001. Use 0 to get a free port.
# As a security precaution, should be blocked by a firewall and not exposed to the Internet.
sonar.search.port=9010

        2.4    启动

cd /opt/sonar/sonarqube-7.1/bin/linux-x86-64
./sonar.sh start

        2.5    启动失败原因

            2.5.1     es.log

        最开始是es.log中的这个

org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root

        由于sonar的启动需要同时启动es和web,所以需要检查这里es.log和web.log,加上sonar.log。

        上面这个异常是es的启动时候的,切换非root用户启动就可以了。

#创建用户组es

groupadd es	

#创建用户组es下的用户es

useradd es -g es

#某个文件夹的权限给es用户组和es用户

chown -R es:es /opt/sonar/sonarqube-7.1/bin/linux-x86-64

 #切换用户

su -es

关于更多es的异常,请看这个    elasticsearch 6.x (二) linux部署 kibana x-pack 安装

                2.5.2    web.log

java.lang.IllegalStateException: Fail to execute ES search request 'SearchRequest xxx on indices '[issues]' on types '[issue]

                我是删除了temp目录和data/es5目录下的全部。执行restart命令。

java.net.BindException: Address already in use

                每次启动前先检查sonar是否停止,有时候命令停不下来,需要执行kill -9命令。

            2.5    访问

    上一张访问成功的图:

            jenkins svn/git sonarqube scanner 代码集成测试_第1张图片

            2.5    下载汉化插件和修改密码

            我这里已经安装过插件了。

            jenkins svn/git sonarqube scanner 代码集成测试_第2张图片

        修改密码

jenkins svn/git sonarqube scanner 代码集成测试_第3张图片

3.    sonarqube  scanner 安装

        sonarqube  scanner下载地址    https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner

       下载、解压缩跟同上。

        可以修改配置文件,指定sonarqube的地址,源码地址等等。

        如果是和jenkins svn集成,这里什么都不需要更改。在集成设置配置,每个项目独立配置就好了。

4.    与jenkins集成

        4.1    安装sonarqube插件

SonarQube Scanner for Jenkins

Sonargraph Integration Jenkins Plugin(暂时没用上)

Quality Gates Plugin(暂时没用上)

           

        4.2    配置sonarqube服务器

jenkins svn/git sonarqube scanner 代码集成测试_第4张图片            jenkins svn/git sonarqube scanner 代码集成测试_第5张图片

token在修改密码那个页面生成:

jenkins svn/git sonarqube scanner 代码集成测试_第6张图片

              4.3    修改jenkins集成配置

                jenkins svn/git sonarqube scanner 代码集成测试_第7张图片

            sources:最开始我写的是src/main/java

Caused by: The folder 'src/mian/java' does not exist for 'mytest' (base directory = /root/.hudson/workspace/mytest)

                然后我去上面的目录下看了一下,发现我外层还有一个web,修改sources和binaries就好了。

             4.4      集成成功

                多了个图标,可以链接到sonarqube,不过很慢,直接登录系统看就好了。

        jenkins svn/git sonarqube scanner 代码集成测试_第8张图片

             4.5      在sonarqube查看项目

            jenkins svn/git sonarqube scanner 代码集成测试_第9张图片


你可能感兴趣的:(运维)