部署SonarQube代码检测服务并结合Jenkins使用
一、SonarQube部署前的内核参数等配置以及java环境配置
1. 修改内核参数配置,使满足环境要求
[root@sonarqube ~]# vim /etc/sysctl.conf
vm.max_map_count=262144
fs.file-max=65536
[root@sonarqube ~]# sysctl -p #生效修改的内核参数
……
vm.max_map_count = 262144
fs.file-max = 65536
2. 修改本机安全策略参数限制
[root@sonarqube ~]# vim /etc/security/limits.conf
……
sonarqube - nofile 65536
sonarqube - nproc 2048
3. 配置java环境
若配置java高版本的需要在sonarqube官网查看是否支持
[root@sonarqube src]# tar -zxv -f jdk-8u144-linux-x64.tar.gz -C /usr/local/
[root@sonarqube src]# vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/local/jdk1.8.0_144
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
[root@sonarqube src]# source /etc/profile.d/java.sh #将java环境变量生效
[root@sonarqube src]# java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
4. 主机内存要求
至少需要3G的内存
二、数据库准备
sonarqube7.8+版本不再支持mysql,以sonarqube7.7为例,支持的mysql版本是5.6和5.7,这里使用mysql5.7版本
不过并不打算在本机安装MySQL,而是在另一台MySQL主机上开通远程访问,创建sonarqube使用的数据库和用户。
在MySQL服务器上使用root账号登陆,执行如下命令:
mysql> CREATE DATABASE IF NOT EXISTS sonarqube CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql> CREATE USER 'sonarqube'@'%' IDENTIFIED BY 'sonarqube,.123!A';
mysql> grant all privileges on sonarqube.* to 'sonarqube'@'%' identified by 'sonarqube,.123!A' with grant option;
mysql> flush privileges;
三、sonarqube安装配置
3.1 安装
# 下载源码压缩包
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.7.zip
# 解压sonarqube源码包,并移动到指定路径
unzip sonarqube-7.7.zip
cp -r sonarqube-7.7 /usr/local/
# 高版本中不能用 root 用户启动 SonarQube,需用非 root 用户启动
# 创建用户以及更改目录的属主属组
useradd sonarqube
chown sonarqube.sonarqube -R /usr/local/sonarqube-7.7
# 配置sonarqube配置文件
su - sonarqube
cd /usr/local/sonarqube-7.7
grep '^[a-Z]' conf/sonar.properties
sonar.jdbc.username=sonarqube #登录数据库的授权用户
sonar.jdbc.password=sonarqube,.123!A #登录数据库的密码
sonar.jdbc.url=jdbc:mysql://192.168.0.187:3306/sonarqube?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
#jdbc:mysql://192.168.0.187:3306/sonarqube 中的sonarqube为创建的数据库名称
sonar.web.host=0.0.0.0 #sonarqube服务监听本机所有ip
sonar.web.port=9000 #sonarqube服务启动时监听的端口
sonar.jdbc.driverClassName=org.gjt.mm.mysql.Driver
# 启动sonarqube服务
/usr/local/sonarqube-7.7/bin/linux-x86-64/sonar.sh start
# 查看sonarqube服务启动状态
/usr/local/sonarqube-7.7/bin/linux-x86-64/sonar.sh status
# 查看sonarqube服务的日志文件
tail -30 /usr/local/sonarqube-7.7/logs/sonar.log
# 查看监听的9000端口
ss -tnlp
# 浏览器访问,后期可以使用nginx做反向代理配置域名进行访问
http://ip:9000
# 登录的用户名及密码均默认为admin
3.2 配置
- 安装中文插件,显示为中文界面
点击administration→Marketplace,直接搜索中文插件,输入'Chinese'进行搜索,然后进行安装
安装好后界面上方会提示重启服务,然后重启服务
再次进行登陆,界面显示都是中文的了
查看中文插件:/usr/local/sonarqube-7.7/extensions/plugins/sonar-l10n-zh-plugin-1.27.jar
- 安装python、java、php等开发语言插件,才能扫描相关语言代码
还是在上一步界面,搜索相关语言安装插件,比如:SonarPython,SonarJava
安装或更新后界面上方会提示重启服务,然后重启服务
注意:安装或更新一个插件最好立即就重启服务,再次登陆后再安装或更新下一个
- 部署扫描器sonar-scanner
sonarqube通过扫描器扫描代码
下载地址:https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/
# 下载扫描器
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.0.0.1744.zip
# 解压并移动到指定目录
unzip sonar-scanner-cli-4.0.0.1744.zip
cp -r sonar-scanner-4.0.0.1744 /usr/local/
# 修改配置文件
sonar.host.url=http://localhost:9000
sonar.sourceEncoding=UTF-8
# 准备一个测试代码压缩包并解压到当前目录下
./python-test/
├── sonar-project.properties
└── src
└── 1.py
# sonar-project.properties内容
# Required metadata
#自定义的项目key
sonar.projectKey=sonarqube:python-simple-sq-scanner
#项目的名称
sonar.projectName=Python :: Simple Project :: SonarQube Scanner
#项目的版本号
sonar.projectVersion=0.1
# Comma-separated paths to directories with sources (required)
#源码路径
sonar.sources=src
# Language
#源码的类型为python代码
sonar.language=python
# Encoding of the source files
#编码的格式
sonar.sourceEncoding=UTF-8
# 1.py内容
#!/usr/bin/python
print("hello world!")
# 在当前的代码路径下执行扫描
[root@bogon python-test]# pwd
/usr/local/sonar-scanner-4.0.0.1744/python-test
[root@bogon python-test]# /usr/local/sonar-scanner-4.0.0.1744/bin/sonar-scanner
INFO: Scanner configuration file: /usr/local/sonar-scanner-4.0.0.1744/conf/sonar-scanner.properties
INFO: Project root configuration file: /usr/local/sonar-scanner-4.0.0.1744/python-test/sonar-project.properties
INFO: SonarQube Scanner 4.0.0.1744
INFO: Java 1.8.0_144 Oracle Corporation (64-bit)
INFO: Linux 3.10.0-957.21.3.el7.x86_64 amd64
INFO: User cache: /root/.sonar/cache
INFO: SonarQube server 7.7.0
INFO: Default locale: "en_US", source code encoding: "UTF-8"
INFO: Load global settings
INFO: Load global settings (done) | time=139ms
INFO: Server id: 2905F556-AWyTTt7AhSCl13oM6t52
INFO: User cache: /root/.sonar/cache
INFO: Load/download plugins
INFO: Load plugins index
INFO: Load plugins index (done) | time=61ms
INFO: Plugin [l10nzh] defines 'l10nen' as base plugin. This metadata can be removed from manifest of l10n plugins since version 5.2.
INFO: Load/download plugins (done) | time=101ms
INFO: Process project properties
INFO: Execute project builders
INFO: Execute project builders (done) | time=3ms
INFO: Project key: sonarqube:python-simple-sq-scanner
INFO: Base dir: /usr/local/sonar-scanner-4.0.0.1744/python-test
INFO: Working dir: /usr/local/sonar-scanner-4.0.0.1744/python-test/.scannerwork
INFO: Load project settings for component key: 'sonarqube:python-simple-sq-scanner'
INFO: Load project repositories
INFO: Load project repositories (done) | time=10ms
INFO: Load quality profiles
INFO: Load quality profiles (done) | time=72ms
INFO: Load active rules
INFO: Load active rules (done) | time=2165ms
WARN: SCM provider autodetection failed. Please use "sonar.scm.provider" to define SCM of your project, or disable the SCM Sensor in the project settings.
INFO: Indexing files...
INFO: Project configuration:
INFO: 1 file indexed
INFO: Quality profile for py: Sonar way
INFO: ------------- Run sensors on module Python :: Simple Project :: SonarQube Scanner
INFO: Load metrics repository
INFO: Load metrics repository (done) | time=87ms
INFO: Sensor Python Squid Sensor [python]
INFO: Sensor Python Squid Sensor [python] (done) | time=141ms
INFO: Sensor Cobertura Sensor for Python coverage [python]
INFO: Sensor Cobertura Sensor for Python coverage [python] (done) | time=8ms
INFO: Sensor PythonXUnitSensor [python]
INFO: Sensor PythonXUnitSensor [python] (done) | time=0ms
INFO: Sensor JaCoCo XML Report Importer [jacoco]
INFO: Sensor JaCoCo XML Report Importer [jacoco] (done) | time=18ms
INFO: Sensor JavaXmlSensor [java]
INFO: Sensor JavaXmlSensor [java] (done) | time=0ms
INFO: Sensor HTML [web]
INFO: Sensor HTML [web] (done) | time=27ms
INFO: ------------- Run sensors on project
INFO: Sensor Zero Coverage Sensor
INFO: Sensor Zero Coverage Sensor (done) | time=15ms
INFO: No SCM system was detected. You can use the 'sonar.scm.provider' property to explicitly specify it.
INFO: 1 file had no CPD blocks
INFO: Calculating CPD for 0 files
INFO: CPD calculation finished
INFO: Analysis report generated in 155ms, dir size=65 KB
INFO: Analysis report compressed in 22ms, zip size=9 KB
INFO: Analysis report uploaded in 1269ms
INFO: ANALYSIS SUCCESSFUL, you can browse http://localhost:9000/dashboard?id=sonarqube%3Apython-simple-sq-scanner
INFO: Note that you will be able to access the updated dashboard once the server has processed the submitted analysis report
INFO: More about the report processing at http://localhost:9000/api/ce/task?id=AWyTdl4K42eglE8uaHB6
INFO: Analysis total time: 6.724 s
INFO: ------------------------------------------------------------------------
INFO: EXECUTION SUCCESS
INFO: ------------------------------------------------------------------------
INFO: Total time: 8.161s
INFO: Final Memory: 12M/46M
INFO: ------------------------------------------------------------------------
# web端查看扫描后生成的记录
四、jenkins配置sonarqube-scanner并实现jenkins代码的自动测试、自动部署
1. 安装扫描器插件
在jenkins插件管理中安装插件:SonarQube Scanner
2. 点击系统设置设置sonarqube服务
3. 添加sonarqube服务并自定义服务名称以及url地址
4. 自动安装scanner扫描器
5. 若已安装scanner扫描器则无需自动安装,直接添加扫描器的工作目录即可
6. 在jenkins创建一个新项目code-test-job
7. 配置此项目的configure
使用git的方式或者使用shell脚本的方式
8. jenkins项目构建
9. 查看项目构建成功的控制台信息输出
10。 查看sonarqube-server服务器记录下来的代码测试结果
部署SonarQube代码检测服务并结合Jenkins使用的更多相关文章
- 自动代码质量分析(GitLab+JenKins+SonarQube)
自动代码质量分析(GitLab+JenKins+SonarQube) 1.需求场景 开发提交代码自动执行代码质量分析. 2.所需应用 GitLab,JenKins,SonarQube 3.架构图 4. ...
- Jenkins之自动部署、代码安全扫描、自动化接口测试
搭建Jenkins wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.reporpm --i ...
- Jenkins+SonarQube代码质量检查自动化
基础概念百度百科:Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:1.持续的软件版本发布/测试项目.2.监控外部调用执行的工作.前面[Sonarqube 代码质量 ...
- SonarQube部署及代码质量扫描入门教程
一.前言 1.本文主要内容 CentOS7下SonarQube部署 Maven扫描Java项目并将扫描结果提交到SonarQube Server SonarQube扫描报表介绍 2.环境信息 工具/环 ...
- 持续集成与自动化部署---代码流水线管理及Jenkins和gitlab集成
1.代码流水线管理 Pipeline名词顾名思义就是流水线的意思,因为公司可能会有很多项目.如果使用jenkins构建完成后,开发构建项目需要一项一项点击,比较麻烦.所以出现pipeline名词. 代 ...
- DevOps之持续集成SonarQube代码质量扫描
一.SonarQube介绍 SonarQube是一个用于代码质量检测管理的开放平台,可以集成不同的检测工具,代码分析工具,以及持续集成工具.SonarQube 并不是简单地把不同的代码检查 ...
- SonarQube代码质量管理平台比较好的搭建和使用资料
http://www.voidcn.com/blog/lidujun1028/article/p-3831235.html Sonar (SonarQube)是一个开源平台,用于管理源代码的质量. ...
- 在k8s集群部署SonarQube
目录 1.2.存储环境 1.3.sonarqube版本 2.部署sonarqube 2.1.部署PostgreSQL 2.2.部署SonarQube 2.3.访问检查 SonarQube 是一款用于代 ...
- 解读与部署(三):基于 Kubernetes 的微服务部署即代码
在基于 Kubernetes 的基础设施即代码一文中,我概要地介绍了基于 Kubernetes 的 .NET Core 微服务和 CI/CD 动手实践工作坊使用的基础设施是如何使用代码描述的,以及它的 ...
随机推荐
- Python黑科技神奇去除马赛克
图片修复程序-可用于水印去除 在现实的生活中,我们可能会遇到一些美好的或是珍贵的图片被噪声干扰,比如旧照片的折痕,比如镜头上的灰尘或污渍,更或者是某些我们想为我所用但有讨厌水印,那么有没有一种办法可以 ...
- @vue/cli 3.x 版本配置productionGzip提高性能
第一步:安装插件 npm i -D compression-webpack-plugin 第二步:引入.在文件vue.config.js里导入compression-webpack-plugin,并添 ...
- OkHttp3 使用详解
一,简介 OkHttp 是一个高效的 HTTP 客户端,具有非常多的优势: 能够高效的执行 http,数据加载速度更快,更省流量 支持 GZIP 压缩,提升速度,节省流量 缓存响应数据,避免了重复的网 ...
- uni-app tabBar 踩坑
{ "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages { "pa ...
- your current language level is ecmascript 5
https://stackoverflow.com/questions/32995066/how-can-i-configure-resharpers-language-level-for-ecmas ...
- jsp死循环
查看多重循环的 i 或者 j 是否写错
- Git-Runoob:Git 服务器搭建
ylbtech-Git-Runoob:Git 服务器搭建 1.返回顶部 1. Git 服务器搭建 上一章节中我们远程仓库使用了 Github,Github 公开的项目是免费的,但是如果你不想让其他人看 ...
- python - re正则匹配模块
re模块 re 模块使 Python 语言拥有全部的正则表达式功能. compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象.该对象拥有一系列方法用于正则表达式匹配和替换. re ...
- chrome浏览器爬虫WebDriverException解决采用python + selenium + chrome + headless模式
WebDriverException: Message: unknown error: Chrome failed to start: crashed 第一种:如果出现下面情况: chrome浏览器有 ...
- flutter block回调
block回调在oc中很常见,到了flutter中仍然有block回调 自定义一个StatefulWidget PageTitle 无参数回调VoidCallback VoidCallback onT ...