小白学习docker搭建sonarqube

一丶背景
个人学习docker集成sonarqube的搭建
二丶版本选择及其下载地址
sonarqube:latest(截止目前为止,最高版本为8.9)
postgres:12.3
详情请参照官方文档。sonarqube 8.9版本不支持mysql,支持jdk11,集成的sonarqube-scanner支持jdk8
三丶postgres的安装

  • 拉取镜像
docker pull postgres:12.3
  • 启动容器
docker run -d --name postgres -p 5432:5432 -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar postgres:12.3
  • 通过sql连接工具连接postgres。创建数据库sonar,为了后续的sonarqube启动指定数据库的数据做准备。
  • CREATE USER sonar WITH PASSWORD 'sonar';
  • GRANT ALL PRIVILEGES ON DATABASE sonar TO sonar;
  • 将数据库 sonar 权限授权于 sonar
    但此时用户还是没有读写权限,需要继续授权表
GRANT ALL PRIVILEGES ON all tables in schema public TO sonar;

四丶sonarqube的安装

  • 拉取镜像
docker pull sonarqube
  • 启动容器
  • sonarqube内部集成了es。所以不能用root用户启动,此时需要添加个额外的用户
sudo docker run \
  -d \
  --name sonar \
  -p 9000:9000 \
  --link postgres \
  -e SONARQUBE_JDBC_URL=jdbc:postgresql://postgres:5432/sonar \
  -e SONARQUBE_JDBC_USERNAME=sonar \
  -e SONARQUBE_JDBC_PASSWORD=sonar \
  -v sonarqube_conf:/opt/sonarqube/conf \
  -v sonarqube_extensions:/opt/sonarqube/extensions \
  -v sonarqube_logs:/opt/sonarqube/logs \
  -v sonarqube_data:/opt/sonarqube/data \
  sonarqube:latest
  • 查看容器启动是否启动成功
  • docker ps
    在这里插入图片描述
  • 如果启动未找到对应的容器,可以查看容器启动日志
  • docker logs -f --tail=30 containerName
  • 启动成功之后就可以访问 http://localhost:9000/ 初始用户/密码:admin/admin
    在这里插入图片描述
    当然这里我自己已经提前装了汉化版,你的是英文的。不要慌,在同样的位置搜索chinese pack
    在这里插入图片描述
    安装之后系统会提示重启,重启之后就可以了。
    五丶sonqube-scanner的安装及其使用
  •  docker-scanner下载地址:https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/
    
  • 上传,解压
  • 配置环境变量 /etc/profile
#JAVA
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 
export PATH=$PATH:$JAVA_HOME/bin
#sonar-scaner
SONAR_SCANNER_HOME=/data/tools/sonar-scanner
export PATH=${SONAR_SCANNER_HOME}/bin:${PATH}

3.验证安装

[root@localhost ~]# sonar-scanner -v
INFO: Scanner configuration file: /data/tools/sonar-scanner/conf/sonar-scanner.properties
INFO: Project root configuration file: NONE
INFO: SonarScanner 4.6.2.2472
INFO: Java 11.0.11 AdoptOpenJDK (64-bit)
INFO: Linux 3.10.0-957.el7.x86_64 amd64

修改sonarqube-scanner的配置文件

#----- Default SonarQube server
sonar.host.url=http://ip:9000
#----- Default source code encoding
sonar.sourceEncoding=UTF-8
sonar.jdbc.url=jdbc:postgresql://ip:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar

六丶项目的实际运用
方案一
最简单的就是直接在sonarqube直接创建手工项目,配置token
在这里插入图片描述
在这里插入图片描述
直接复制下方的内容在项目根目录直接运行即可

mvn sonar:sonar \
  -Dsonar.projectKey=test \
  -Dsonar.host.url=http://localhost:9000 \
  -Dsonar.login=c20b8378365aa56354812bb7ade02eb1c6c4867

方案二
配合maven,使用scanner

  • 修改本地的maven的配置settings文件
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
	<localRepository>F:\person\repository</localRepository>

  <profiles>
    <profile>
      <id>sonar</id>

      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
	  <properties>
        <!-- 配置 Sonar Host地址,默认:http://localhost:9000 -->
        <sonar.host.url>http://localhost:9000</sonar.host.url>
		<sonar.login>admin</sonar.login>
		<sonar.password>admin</sonar.password>
    </properties>
    </profile>
  </profiles>
</settings>```
 - 项目文件中添加插件
```java
   <plugin>
       <groupId>org.sonarsource.scanner.maven</groupId>
       <artifactId>sonar-maven-plugin</artifactId>
       <version>3.9.0.2155</version>
   </plugin>
  • 打开项目根目录执行mvn sonar:sonar
    在这里插入图片描述
  • 此时查看sonarqube,项目状态
    在这里插入图片描述
    方案三集成jekins
    这里使用的是jenkinsci/blueocean,搭建过程可以查看jenkins的搭建
  • https://www.jb51.net/article/196239.htm
  • 安装SonarQube Scanner插件
    在这里插入图片描述
  • 在sonarqube中生成一个token,为了jenkins的免密认证。生成token在用户–>我的账号—>安全下
    在这里插入图片描述
  • 然后,在Jenkins中配置连接sonarqube服务器的地址,这里用到的token就是刚才在sonarqube中创建的那个token
    系统管理—》全局设置
    在这里插入图片描述
  • 接着在Jenkins中配置连接sonarqube服务器的地址,这里用到的token就是刚才在sonarqube中创建的那个token

在Jenkins中的系统配置中设置SonarQube servers的token
在这里插入图片描述
在这里插入图片描述

  • 在Jenkins中的全局配置中安装SonarQube servers
    在这里插入图片描述

  • 在Jenkins中的全局配置中安装JDK
    标红的部分需要输入oracle账户密码,否则构建过程下载JDK失败

  • 创建任务
    在这里插入图片描述

  • 配置GIT的配置
    在这里插入图片描述
    在这里插入图片描述

  • 构建环境
    在这里插入图片描述
    在这里插入图片描述

sonar.projectKey=${JOB_NAME}
sonar.sources=.
sonar.projectName=${JOB_NAME}
sonar.projectVersion=${BUILD_VERSION}
 
sonar.language=java
sonar.sourceEncoding=UTF-8
 
sonar.sources=$WORKSPACE
sonar.java.binaries=$WORKSPACE

sonar.java.binaries=$WORKSPACE 这个很重要

  • 配置定时任务构建
    每天下午两点开始构建

  • 构建历史当中我们可以查看项目构建状态以及实时控制台输出
    在这里插入图片描述

  • 返回sonarqube当中 可以查看刚才自动构建的任务
    在这里插入图片描述

  • 解决jenkins的时间服务器时间不一致
    进入Jenkins→系统管理→脚本命令行,输入

System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白努力学java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值