本文介绍以docker容器方式启动postgres和sonarqube。

前提条件: linux系统已具备docker环境,安装jenkins,jenkins已配置好git,jdk,nodejs等。 关闭防火墙(或放行5432、9000端口)

先在jenkins安装SonarQube Scanner插件

登录jenkins,系统管理,插件管理,搜索SonarQube Scanner,安装SonarQube Scanner或者SonarQube Scanner for Jenkins

jenkins看sonar检测失败 jenkins集成sonar_java

1.安装Sonar

演示将postgres和sonarqube安装在10.144.118.57上,登录57机器执行以下步骤。

1.1.下载镜像

docker pull postgres:11.1
docker pull sonarqube:7.4-community

如下图:

jenkins看sonar检测失败 jenkins集成sonar_docker_02

1.2.运行容器

启动postgres

docker run -di --restart=always --name postgres -p 5432:5432 -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=123456 postgres:11.1

启动postgres

docker run -di --restart=always --name sonarqube -p 9000:9000 --link postgres -e SONARQUBE_JDBC_URL=jdbc:postgresql://postgres:5432/sonar -e SONARQUBE_JDBC_USERNAME=sonar -e SONARQUBE_JDBC_PASSWORD=123456 sonarqube:7.4-community

映射SonarQube存储(如果需要) -v sonarqube_conf:/opt/sonarqube/conf -v sonarqube_extensions:/opt/sonarqube/extensions -v sonarqube_logs:/opt/sonarqube/logs -v sonarqube_data:/opt/sonarqube/data

1.3.查看容器运行状态

docker ps -a

jenkins看sonar检测失败 jenkins集成sonar_git_03

这里由于patainer已经占用9000端口,临时将9091端口映射到9000。


1.4.登录sonarqube获取Token

浏览器访问 http://10.144.118.57:9091 ,初始使用 admin/admin 登录。

jenkins看sonar检测失败 jenkins集成sonar_linux_04

初始进来没有这两个项目,这是分析代码后效果图。

点击用户头像,选择My Account,输入token名称(名称可随意),点击Generate。

jenkins看sonar检测失败 jenkins集成sonar_docker_05

生成token,并记录,后面jenkin集成Sonarqube Servers要用!

2.jenkins中配置Sonar

2.1.配置全局凭据

登录jenkins

如果手动添加API Token为关闭状态,需要先打开,系统管理->全局安全配置->API Token,勾选【允许用户手动创建一个遗留的 API token】,保存。

点击系统管理,点击Manager Credentials

jenkins看sonar检测失败 jenkins集成sonar_java_06

点击全局

jenkins看sonar检测失败 jenkins集成sonar_java_07

添加凭据

jenkins看sonar检测失败 jenkins集成sonar_docker_08

类型:Secret text 范围:全局 Secret:sonarqube中生成的token ID:自定义 描述:自定义

点击确定。

jenkins看sonar检测失败 jenkins集成sonar_git_09

2.2.添加Sonarqube Servers

点击系统管理,系统配置

jenkins看sonar检测失败 jenkins集成sonar_linux_10

在SonarQube servers下,勾选Environment variables,点击Add SonarQube

Name:自定义 Server URL:http://10.144.118.57:9091(上面安装的SonarQube地址) Server authentication token:选择2.1中配置的全局凭据

点击保存。

jenkins看sonar检测失败 jenkins集成sonar_jenkins看sonar检测失败_11

3.新建任务,测试sonar分析java后端代码

3.1.新建任务

登录jenkins,新建任务,输入任务名称,选择构建一个自由风格的软件项目,点击OK。

jenkins看sonar检测失败 jenkins集成sonar_docker_12

3.2.配置

源码管理

勾选Git(这里假设jenkins已经集成git,如未集成git,这里没有Git选项,请先集成git后再操作),输入项目git地址,选择用户(这里的用户也是凭据,参照2.1配置全局凭据操作,类型选择Username with password),指定分支,源码库浏览器默认自动;

jenkins看sonar检测失败 jenkins集成sonar_linux_13

构建

点击增加构建步骤,选择Execute SonarQube Scanner

选择jdk, 选择SonarQube Scanner(2.2中添加的), 填写Analysis properties,内容如下:

>sonar.projectKey=ib-gisedit
>sonar.projectName=ib-gisedit
>sonar.language=java
>sonar.sourceEncoding=UTF-8
>sonar.sources=$WORKSPACE/ib-gisedit/src
>sonar.java.binaries=$WORKSPACE

jenkins看sonar检测失败 jenkins集成sonar_git_14

点击保存

3.3.测试代码分析

点击立即构建,即可构建项目执行代码分析,登录sonarqube界面,点击Projects即可看到分析结果,分析内容含义请自行查阅资料。

jenkins看sonar检测失败 jenkins集成sonar_linux_15

4.新建任务,测试sonar分析前端代码

测试sonar分析前端代码需要jenkins配置nodejs

这里以前端项目nari-globe为例,前端新建任务的步骤和测试分析java后端代码的步骤基本一致,区别在构建填写Analysis properties时

jenkins看sonar检测失败 jenkins集成sonar_jenkins看sonar检测失败_16

Analysis properties内容如下:

sonar.projectKey=nari-globe
sonar.projectName=nari-globe
sonar.sourceEncoding=UTF-8
sonar.exclusions=**/*.png,**/*.svg,**/*.md,**/*.eot,**/*.ttf,**/*.jpg,**/*.md,**/*.json
sonar.sources=$WORKSPACE

选择前端项目,执行3.3.测试代码分析,分析前端代码,登录sonarqube界面查看分析结果。

完结!