Linux搭建SonarQube结合Jenkins
环境:linux+jdk8+mysql5.7.31+sonarqube7.5+sonar-scanner-4.4+jenkins2.249+sonar-l10n-zh-plugin-1.25.jar
安装:sonarqube7.5
下载:wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.5.zip 解压:unzip sonarqube-7.5.zip 配置权限:chmod -R 777 sonarqube-7.5
Mysql安装配置(初始安装需执行,目前环境已有可跳过该步骤)
安装
下载:wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz 解压:tar -xvf mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz 重命名:mv mysql-5.7.31-linux-glibc2.12-x86_64 mysql5.7
配置
配置文件修改:vim /etc/my.cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock port=2222 basedir=/home/deploy/mysql5.7/ datadir=/home/deploy/mysql5.7/data/ max_connections=200 character-set-server=utf8 default-storage-engine=INNODB user=root symbolic-links=0 [mysqld_safe] log-error=/var/log/mariadb/mariadb.log pid-file=/var/run/mariadb/mariadb.pid !includedir /etc/my.cnf.d [client] default-character-set=utf8 socket=/var/lib/mysql/mysql.sock [mysql] default-character-set=utf8 socket=/var/lib/mysql/mysql.sock
添加环境变量: echo "PATH=/home/deploy/mysql5.7/bin/:$PATH" >> /etc/profile source /etc/profile
创建data:mkdir/home/deploy/mysql5.7/data
初始化数据库:mysqld --initialize --user=mysql --basedir=/home/deploy/mysql5.7/ --datadir=/home/deploy/mysql5.7/data/
报错解决:yum install -y libaio
停止:/etc/init.d/mysqld.server stop
启动:/etc/init.d/mysqld.server start
需要跳过授权表,启动数据库,因为mysql默认会设置一个随机密码
/etc/init.d/mysqld.server start --skip-grant-tables
进入数据库:mysql -uroot 修改密码:update mysql.user set authentication_string=password('密码') where user='root' and host='localhost'; 刷新提交:flush privileges;
新建数据库
Navicat连接接数据库并新建sonar数据库
Linux sonarqube配置
vim /home/deploy/sonarqube-7.5/conf/sonar.properties sonar.jdbc.url=jdbc:mysql://ip:port/database_name?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false sonar.jdbc.username=username sonar.jdbc.password=password sonar.sorceEncoding=UTF-8 sonar.login=admin sonar.password=admin
Linux配置sonar-scanner
安装
下载sonar-scanner:wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.4.0.2170-linux.zip 放到 /home/deploy/sonarqube-7.5/ 目录下 解压:unzip sonar-scanner-cli-4.4.0.2170-linux.zip
配置
配置环境变量: vim /etc/profile 添加以下: # sonar-scanner export SONAR_RUNNER_HOME=/home/deploy/sonarqube-7.5/sonar-scanner-4.4.0.2170-linux export PATH=$SONAR_RUNNER_HOME/bin:$PATH
sonarqueb汉化
下载汉化插件:wget https://github-production-release-asset-2e65be.s3.amazonaws.com/6060405/7e74d980-0eb4-11e9-8a15-18f3ab1d1e41?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20200902%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200902T080906Z&X-Amz-Expires=300&X-Amz-Signature=1f30d24a73a3630c19fb7f395577b6022c9738460b4e96c2a516e8ea205dc107&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=6060405&response-content-disposition=attachment%3B%20filename%3Dsonar-l10n-zh-plugin-1.25.jar&response-content-type=application%2Foctet-stream
放到 /home/deploy/sonarqube-7.5/extensions/plugins/ 目录下
启动sonar
赋权:chmod -R 777 /home/deploy/sonarqube-7.5/
创建sonar用户:useradd sonar
切换用户:su sonar
启动:sh sonar.sh start
停止:sh sonar.sh stop
重启:sh sonar.sh restart
输出以下代表以启动成功
浏览器输入:ip:9000,即可打开sonarqube
sonarqube初始账号密码:admin admin
Jenkins项目结合SonarQube配置
添加sonar-scanner插件
配置sonar-scanner
生成sonarqube token
登陆sonarqube会自动弹出生产token窗口
配置sonar-sacnner token
配置sonarqube server
项目配置
sonar.login=sonarqube用户名 sonar.password=sonarqube密码 sonar.projectKey=Key,不要重复,最好是项目名 sonar.projectName=不要重复,最好是项目名 sonar.projectVersion=1.0.0 sonar.sourceEncoding=UTF-8 sonar.sources=项目代码路径 sonar.java.binaries=项目打包编译后路径
这里的$pname是项目路径,$name是项目名,设置了全局变量参数,方便一点
执行结果
命令行添加jenkins项目sonar配置
如果Jenkins项目太多需要添加sonarqube配置,可以直接在Jenkins工作目录下的Jobs/config.xml里直接添加配置。我的任务配置文件最后都是执行shell,执行shell在config.xml是 /hudson.tasks.Shell> ,所以就在之后 /hudson.tasks.Shell> 添加配置,如下:
sed -i 's/<\/hudson.tasks.Shell>/&\n\n <\/project>\n sonar.login=admin\nsonar.password=admin\nsonar.projectKey=项目名\nsonar.projectName=项目名\nsonar.projectVersion=1.0.0\nsonar.sourceEncoding=UTF-8\nsonar.sources=\/home\/deploy\/jenkins\/workspace\/项目名\/src\nsonar.java.binaries=\/home\/deploy\/jenkins\/workspace\/项目名\/target\/classes<\/properties>\n <\/javaOpts>\n <\/additionalArguments>\n (Inherit From Job)<\/jdk>\n <\/task>\n<\/hudson.plugins.sonar.SonarRunnerBuilder>/' /home/deploy/jenkins/jobs/项目名/config.xml
这样每次改下项目名执行命令就可以添加了,不用在Jenkins页面添加了
问题
在Jenkins配置sonar-scanner参数无效导致sonar扫描后项目为空
在项目根目录新建 sonar-project.properties 配置文件,内容如下:
sonar.login=admin sonar.password=admin sonar.projectKey=项目名 sonar.projectName=项目名 sonar.projectVersion=1.0.0 sonar.sourceEncoding=UTF-8 sonar.sources=项目src路径 sonar.java.binaries=项目打包后target路径
执行 sonar-scanner 即可