Centos7部署SonarQube并整合到jenkins

所需环境:

SonarQube: 8.4.2

java: java11(这个必须要java11,对应sonarqube8版本,使用java15或者jdk1.8都不行,只能java11,否则会出现版本不对或者启动jvm参数错误)

PostgreSQL: 12.4 (SonarQube已经不支持mysql了,这里使用PostgreSQL)

SonarScanner 4.4.0.2170

sonar官网下载太慢,可以到下面的地址下载,pgsql直接去官网下载

https://binaries.sonarsource.com/Distribution/

安装postgresql

创建postgres用户

# useradd postgres
# passwd postgres

编译安装postgre

# tar -zxf postgresql-12.4.tar.gz
# cd postgresql-12.4
# ./configure --prefix=/usr/local/pgsql/
//编译时候会报错,需要装readline,直接yum安装readline-devel即可
# make && make install

// 加入环境变量
# vim /etc/profile
末尾加入
# PGSQL
PGHOME=/usr/local/pgsql
PGDATA=/data/postgresql/data
PATH=$PGHOME/bin:$PATH
export PGHOMD PGDATA PATH
// source变量
# source /etc/profile

目录授权相关设置

// 创建data目录
# mkdir -p /data/postgresql/data/
# chown postgres.postgres /data/postgresql/data/
# chown postgres.postgres /usr/local/pgsql/
// 拷贝启动文件,先进入源安装文件目录
# cp contrib/start-scripts/linux /etc/init.d/postgresqld
// 修改basedir , datadir 和log文件位置
vim /etc/init.d/postgresqld
prefix=/usr/local/pgsql
PGDATA="/data/postgresql/data"
PGLOG="$PGDATA/serverlog"

# chmod +x /etc/init.d/postgresqld
切换用户
su - postgres

 初始化pgsql

$ cd /usr/local/pgsql/bin
$ ./initdb --pgdata=/data/postgresql/data/

修改登录配置

$ vim /data/postgresql/data/postgresql.conf
listen_addresses = '*'

修改权限配置

$ vim /data/postgresql/data/pg_hba.conf
// 主要修改ipv4相关的内容, local为本地相关配置,host为远程相关配置,md5为密码登录, trust为信任模式,不需要密码
local   all             all                                     trust
# IPv4 local connections:
host    all             all             0.0.0.0/0                md5

启动pgsql

$ /etc/init.d/postgresqld start
// 输入postgres的密码,显示ok为启动成功

创建sonarqube使用的相关数据库和角色权限

1. 使用 pgadmin登录pgsql数据库,创建sonar数据和sonar用户,并为用户设置密码(具体步骤可度娘)

 

 

安装SonarQube

// 创建sonar用户,sonarqube不能以root启动
# useradd sonar
# unzip sonarqube-8.4.2.36762.zip
# mv sonarqube-8.4.2 /opt/sonar
# chown sonar.sonar /opt/sonar

修改配置文件

# vim conf/sonar.properties
// 看好jdbc链接参数, 模版文件参数有后缀, 需要删除, 否则sonar无法启动log无报错, 但数据库log有错误显示
sonar.jdbc.url=jdbc:postgresql://127.0.0.1/sonar
sonar.jdbc.username=postgres
sonar.jdbc.password=postgres

sonar.web.host=0.0.0.0
sonar.web.port=9000

PS: 查看配置里相关端口,如有和现有服务冲突的,需要修改,否则程序无法启动
# vim conf/wrapper.conf
// 由于现有项目使用的是jdk1.8,所以jdk11无法加入环境变量,直接指定
wrapper.java.command=/usr/local/java/jdk-11.0.8/bin/java

修改系统相关配置(这里根据log报错来,不同版本可能不一样,百度一搜一堆)

# vim /etc/sysctl.conf
vm.max_map_count = 262144

使配置生效
# sysctl -p

// 修改limits参数
# vim /etc/security/limits.conf
// sonar为sonarqube专门创建的启动用户
sonar hard nofile 65536
sonar soft nofile 65536

启动sonarqube

# su - sonar
$ /opt/sonar/bin/linux-x86-64/sonar.sh start

这玩意一次完美启动太难了,估计都会有问题,反正就看日志,百度吧,重点是es.log,这几个日志加上pgsql的日志,基本上就能定位出问题所在

启动之后,如果log无报错,输出正常,就可以打开页面了

输入http://IP:9000,帐号口令都为admin

本地安装SonarScanner

# unzip sonar-scanner-cli-4.4.0.2170-linux.zip
# mv sonar-scanner-cli-4.4.0.2170-linux /opt/sonar-scanner

修改配置文件

# vim /opt/sonar-scanner/conf/sonar-scanner.properties
#----- Default SonarQube server
sonar.host.url=http://localhost:9000

#----- Default source code encoding
sonar.sourceEncoding=UTF-8

sonar.login=admin  
sonar.password=admin

加入环境变量

# vim /etc/profile
末尾加入
# SONAR-SCANNER
SCANNERHOME=/opt/sonar-scanner
PATH=$SCANNERHOME/bin:$PATH
export PATH

# source /etc/profile

 

测试:

找到一个项目,在项目中创建sonar-project.properties文件,文件内容大概为:

#required metadata
#projectKey项目的唯一标识,不能重复
sonar.projectKey=sonar_test_freestyl
sonar.projectName=sonar_test_freestyl
sonar.projectVersion=1.0 
sonar.sourceEncoding=UTF-8
sonar.scm.disabled=true

#sonar.login=929abf38877faf84da0b579cc5bac6521a486ddf

sonar.java.sources=1.8
sonar.java.target=1.8
sonar.java.binaries=.

# 扫描目录,相对于basedir
sonar.sources=src,dist
sonar.projectBaseDir=.
sonar.exclusions=**./target/**,**/test/**,**/node_modules/**

在目录下使用sonar-scanner进行扫描,扫描后登录sonarqube后台查看扫描结果

SonarQube整合到jenkins

安装插件SonarQube Scanner for Jenkins

jenkins->系统管理->全局配置

1. 加入SonarQube Scanner

2. 加入java11变量(sonarqube需要jdk11)

 jenkins->系统管理->系统配置->SonarQube servers

加入SonarQube服务器相关信息

 注意: 这里的认证不能使用账号密码,否则无法添加,这里需要两步:

1.在SonarQube后台创建token(我的帐号->安全选项中)

2. 在jenkins凭证管理中创建对应认证

全部配置完成后, 就可以在项目中启用SonarQube进行代码质量扫描了

自由风格项目或者maven项目

一般在构建之后,发布之前,选择,配置如下

保存,构建,有错排错,没错继续研究优化

 

 pipeline流水线语法

创建sonar-project.properties文件,放到项目根目录

# vim sonar-project.properties
#required metadata
#projectKey项目的唯一标识,不能重复, 这里不能用变量了
sonar.projectKey=pipeline_test
sonar.projectName=pipeline_test
sonar.projectVersion=1.0 
sonar.sourceEncoding=UTF-8
sonar.scm.disabled=true

#sonar.login=admin
#sonar.passwd=admin
#sonar.login=929abf38877faf84da0b579cc5bac6521a486ddf

sonar.java.sources=1.8
sonar.java.target=1.8
sonar.java.binaries=.


sonar.sources=src
sonar.projectBaseDir=.
#sonar.exclusions=**./target/**,**/test/**,**/node_modules/**

pipeline语法

① 使用jenkins集成的sonarscanner进行扫描(这种方式可以在项目左侧集成一个sonarqube工作模块,缺点是,一些扫描路径过长,容易使tomcat内存溢出)

stage('代码质量检查'){
            when { environment name: 'Chioce', value: 'Deploy' }

            steps{
                script {
                    // 这里和全局变量的配置对应
                    sonarHome = tool 'SonarScanner_Auto'
                    }
                // 这里和系统配置里Sonar服务器名称对应
                withSonarQubeEnv('SonarQubeServer') {
                    sh "${sonarHome}/bin/sonar-scanner"
                    }
                }
        }

 

②  使用shell调用本地sonarscanner命令进行扫描

stage('代码质量检查'){
    when { environment name: 'Chioce', value: 'Deploy' }
    steps{
        // 调用本地sonar-scanner
        sh 'sonar-scanner'
        }
    }   
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值