前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >安装SonarQube

安装SonarQube

作者头像
summerking
发布2022-09-16 12:18:06
5670
发布2022-09-16 12:18:06
举报
文章被收录于专栏:summerking的专栏

记录两种部署方式:zip安装包部署、docker-compose;并且安装PDF导出报告插件;

# SonarQube

SonarQube ® 是一种自动代码审查工具,用于检测代码中的错误、漏洞和代码异味。它可以与您现有的工作流程集成,以实现跨项目分支和拉取请求的持续代码检查。

# 1. 前置条件

  • 由于用到elasticsearch 所以需要java环境
  • 数据库选择mysql(sonarQube7.9以上不再支持MySQL)
  • 版本如下:
代码语言:javascript
复制
[root@summer home]# mysql -V
mysql  Ver 14.14 Distrib 5.7.37, for Linux (x86_64) using  EditLine wrapper
[root@summer home]# java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
[root@summer home]#

# 2. 安装

# 2.1 创建sonar用户

  • SonarQube不能使用root用户启动,需创建普通用户
代码语言:javascript
复制
[root@summer opt]# useradd sonar //新建普通用户,es必须以普通身份启动
[root@summer opt]# passwd sonar
Changing password for user sonar.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@summer opt]# 
## 密码:hadoop

# 2.2 下载解压并授权

代码语言:javascript
复制
[root@summer opt]# ll
total 200916
-rw-r--r--. 1 root root 205736714 Jan 25 18:57 sonarqube-7.8.zip
[root@summer opt]# unzip sonarqube-7.8.zip
...
...
[root@summer opt]# chmod -R 777 /opt/sonarqube-7.8/
[root@summer opt]# ll
total 200916
drwxrwxrwx. 11 root root       141 Jun 17  2019 sonarqube-7.8
-rw-r--r--.  1 root root 205736714 Jan 25 18:57 sonarqube-7.8.zip
[root@summer opt]# 

# 2.3 配置要求

  • 编辑sonarqube配置文件
代码语言:javascript
复制
[root@summer conf]# cat sonar.properties 
sonar.jdbc.url=jdbc:mysql://127.0.0.1:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.jdbc.username=root
sonar.jdbc.password=Root@sswo4d
sonar.sorceEncoding=UTF-8
# Property values can:

  • 新建数据库
代码语言:javascript
复制
[root@summer conf]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 44
Server version: 5.7.37 MySQL Community Server (GPL)

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database sonar default charset utf8;
Query OK, 1 row affected (0.02 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> \q
Bye
[root@summer conf]#

  • 系统配置
代码语言:javascript
复制
[root@summer conf]# sysctl -w vm.max_map_count=262144
vm.max_map_count = 262144
[root@summer conf]# sysctl -w fs.file-max=65536
fs.file-max = 65536
[root@summer conf]# ulimit -n 65536
[root@summer conf]# ulimit -u 2048


## /etc/security/limits.conf 增加
* hard nofile 65536
* soft nofile 65536
* soft nproc 4096
* hard nproc 4096
sonar soft memlock unlimited
sonar hard memlock unlimited

[root@summer logs]# sysctl -p

# 3. 使用方式

# 3.1 启动服务

代码语言:javascript
复制
[root@summer sonarqube-7.8]# su sonar ./bin/linux-x86-64/sonar.sh start
Starting SonarQube...
Started SonarQube.

# 3.2 查看服务

代码语言:javascript
复制
[root@summer sonarqube-7.8]# su sonar ./bin/linux-x86-64/sonar.sh status
SonarQube is running (87022).
[root@summer sonarqube-7.8]# ss -anlt | grep 9000
LISTEN     0      25        [::]:9000                  [::]:*            

  • 浏览器访问http://ip:9000
  • 默认账号密码(admin/admin)

# 3.3 日志文件

代码语言:javascript
复制
[root@summer logs]# ll
total 176
-rw-r--r--. 1 sonar sonar  14328 Jan 25 19:54 access.log
-rw-r--r--. 1 sonar sonar    555 Jan 25 19:54 ce.log
-rw-r--r--. 1 sonar sonar  15102 Jan 25 19:54 es.log
-rwxrwxrwx. 1 root  root      88 Jun 17  2019 README.txt
-rw-r--r--. 1 sonar sonar   6297 Jan 25 19:54 sonar.log
-rw-r--r--. 1 sonar sonar 113994 Jan 25 19:54 web.log
[root@summer logs]# pwd
/opt/sonarqube-7.8/logs

# 4. 本地项目扫描

搭配SonarScanner使用

# 4.1 下载SonarScanner并解压

  • 如图解压至C:\sonar-scanner

# 4.2 配置SonarScanner

  • 修改SonarScanner配置文件
  • 新建系统变量:SONAR_RUNNNER_HOME=Sonar Scanner根目录
  • 修改系统变量path:新增%SONAR_RUNNNER_HOME%\bin
  • 打开cmd面板,输入sonar-scanner -version,出现下图,则表示环境变量设置成功:

# 4.3 审核项目代码

  • 在需要审核的项目根目录下新建sonar-project.properties文件,内容如下:
  • 打开cmd面板,进入项目根目录下,然后输入“sonar-scanner”命令,执行代码分析

# 4.4 查看审核结果

  • 打开http://IP:9000 (SonarQube服务器),输入账号密码,即可查看代码分析结果。

# 5. docker-compoes安装SonarQube8.9.1

  • 因为需要集成jenkins、并且不影响其他服务,所以使用docker方式部署;导出PDF汇总文件,目前该插件只适配到SonarQube8.9.1
代码语言:javascript
复制
[root@summer ~]# cd docker-sonarqube/
[root@summer docker-sonarqube]# cat docker-compose.yml 
version: '2'
services:
  postgresql:
    image: docker.io/bitnami/postgresql:13
    volumes:
      - 'postgresql_data:/bitnami/postgresql'
    environment:
      # ALLOW_EMPTY_PASSWORD is recommended only for development.
      - ALLOW_EMPTY_PASSWORD=yes
      - POSTGRESQL_USERNAME=bn_sonarqube
      - POSTGRESQL_DATABASE=bitnami_sonarqube
  sonarqube:
    image: docker.io/bitnami/sonarqube:8.9.1
    ports:
      - '80:9000'
    volumes:
      - 'sonarqube_data:/bitnami/sonarqube'
    depends_on:
      - postgresql
    environment:
      # ALLOW_EMPTY_PASSWORD is recommended only for development.
      - ALLOW_EMPTY_PASSWORD=yes
      - SONARQUBE_DATABASE_HOST=postgresql
      - SONARQUBE_DATABASE_PORT_NUMBER=5432
      - SONARQUBE_DATABASE_USER=bn_sonarqube
      - SONARQUBE_DATABASE_NAME=bitnami_sonarqube
volumes:
  postgresql_data:
    driver: local
  sonarqube_data:
    driver: local

# 5.1 参数修改

代码语言:javascript
复制
vim /etc/sysctl.conf

# 文件最后加上如下内容
vm.max_map_count = 262144

[root@summer ~]# sysctl -p
vm.max_map_count = 262144

# 5.2 日志查看

代码语言:javascript
复制
[root@summer docker-sonarqube]# docker-compose logs sonarqube
Attaching to docker-sonarqube_sonarqube_1
sonarqube_1   | sonarqube 07:04:27.46 
sonarqube_1   | sonarqube 07:04:27.46 Welcome to the Bitnami sonarqube container
sonarqube_1   | sonarqube 07:04:27.46 Subscribe to project updates by watching https://github.com/bitnami/bitnami-docker-sonarqube
sonarqube_1   | sonarqube 07:04:27.46 Submit issues and feature requests at https://github.com/bitnami/bitnami-docker-sonarqube/issues
sonarqube_1   | sonarqube 07:04:27.46 
sonarqube_1   | sonarqube 07:04:27.48 INFO  ==> Validating settings in POSTGRESQL_CLIENT_* env vars
sonarqube_1   | sonarqube 07:04:27.54 WARN  ==> You set the environment variable ALLOW_EMPTY_PASSWORD=yes. For safety reasons, do not use this flag in a production environment.
sonarqube_1   | sonarqube 07:04:27.54 INFO  ==> Creating SonarQube configuration
sonarqube_1   | sonarqube 07:04:27.59 INFO  ==> Trying to connect to the database server
sonarqube_1   | sonarqube 07:04:32.62 INFO  ==> Ensuring SonarQube directories exist
sonarqube_1   | sonarqube 07:04:32.66 INFO  ==> Starting SonarQube in background
sonarqube_1   | sonarqube 07:04:33.20 INFO  ==> Waiting for SonarQube to start...
sonarqube_1   | sonarqube 07:05:20.33 INFO  ==> Configuring user credentials
sonarqube_1   | sonarqube 07:05:21.97 INFO  ==> Stopping SonarQube
sonarqube_1   | sonarqube 07:05:24.05 INFO  ==> Persisting SonarQube installation
sonarqube_1   | sonarqube 07:05:24.35 INFO  ==> ** SonarQube setup finished! **
sonarqube_1   | 
sonarqube_1   | sonarqube 07:05:24.40 INFO  ==> ** Starting SonarQube **
sonarqube_1   | Running SonarQube...

# 5.3 PDF插件部署

插件下载地址

代码语言:javascript
复制
[root@summer docker-sonarqube]# ll
total 12876
-rw-r--r-- 1 root root      902 May  6 10:43 docker-compose.yml
-rw-r--r-- 1 root root 13175122 May  6 10:18 sonar-pdfreport-plugin-4.0.0.jar
-rw-r--r-- 1 root root      206 May  6 14:22 sonar-project.properties

  • cp到容器中,然后重启Sonarqube服务即可
代码语言:javascript
复制
docker cp sonar-pdfreport-plugin-4.0.0.jar de:/opt/bitnami/sonarqube/extensions/plugins/
  • sonar.pdf.usernamesonar.pdf.password这些参数的值需要提前在sonar平台配置好

# 6. docker安装sonar-scanner

  • 官网示例
代码语言:javascript
复制
docker run \
    --rm \
    -e SONAR_HOST_URL="http://${SONARQUBE_URL}" \
    -e SONAR_LOGIN="myAuthenticationToken" \
    -v "${YOUR_REPO}:/usr/src" \
    sonarsource/sonar-scanner-cli

  • 这里使用jenkins的工作目录
代码语言:javascript
复制
docker run \
    --rm \
    -e SONAR_HOST_URL="http://192.168.0.X.X" \
    -e SONAR_LOGIN="8b335b774477e6bcb023a2c4ca235efc9a308c22" \
    -v "/data/code/jenkins_home/workspace/SonarQube-summer:/usr/src" \
    sonarsource/sonar-scanner-cli

  • SONAR_LOGIN:是创建Sonarqube工程时生成的key
  • 在项目根目录创建sonar-project.properties文件
代码语言:javascript
复制
cat sonar-project.properties 

sonar.host.url=http://192.168.X.X
sonar.login=8b335b774477e6bcb023a2c4ca235efc9a308c22
sonar.projectKey=summer
sonar.sources=.
sonar.pdf.password=bitnami
sonar.pdf.username=admin
sonar.pdf.skip=false

sonar.pdf.password这些参数的值需要提前在平台配置好

# 7. 集成jenkins

通过 Jenkins 更新中心安装 SonarScanner for Jenkins。配置您的 SonarQube 服务器:

以管理员身份登录 Jenkins,然后转到Manage Jenkins > Configure System。 向下滚动到 SonarQube 配置部分,单击Add SonarQube,然后添加系统提示您输入的值。 服务器身份验证令牌应创建为“秘密文本”凭据。

- 改:

  1. 拉取最新的git代码
  2. 执行shell:
代码语言:javascript
复制
docker run \
    --rm \
    -e SONAR_HOST_URL="http://192.168.X.X" \
    -e SONAR_LOGIN="8b335b774477e6bcb023a2c4ca235efc9a308c22" \
    -v "/data/code/jenkins_home/workspace/SonarQube-summer:/usr/src" \
    sonarsource/sonar-scanner-cli

  1. pdf文件获取路径:
代码语言:javascript
复制
root@summer docker-sonarqube]# docker-compose ps
            Name                           Command               State          Ports        
---------------------------------------------------------------------------------------------
docker-sonarqube_postgresql_1   /opt/bitnami/scripts/postg ...   Up      5432/tcp            
docker-sonarqube_sonarqube_1    /opt/bitnami/scripts/sonar ...   Up      0.0.0.0:80->9000/tcp
[root@summer docker-sonarqube]# docker exec -it docker-sonarqube_sonarqube_1 /bin/bash
sonarqube@de59eefc0110:/$ cd /opt/bitnami/sonarqube/pdf-files/
sonarqube@de59eefc0110:/opt/bitnami/sonarqube/pdf-files$ ls
summer.pdf
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-02-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • # SonarQube
  • # 1. 前置条件
  • # 2. 安装
    • # 2.1 创建sonar用户
      • # 2.2 下载解压并授权
        • # 2.3 配置要求
        • # 3. 使用方式
          • # 3.1 启动服务
            • # 3.2 查看服务
              • # 3.3 日志文件
              • # 4. 本地项目扫描
                • # 4.1 下载SonarScanner并解压
                  • # 4.2 配置SonarScanner
                    • # 4.3 审核项目代码
                      • # 4.4 查看审核结果
                      • # 5. docker-compoes安装SonarQube8.9.1
                        • # 5.1 参数修改
                          • # 5.2 日志查看
                            • # 5.3 PDF插件部署
                            • # 6. docker安装sonar-scanner
                            • # 7. 集成jenkins
                            相关产品与服务
                            容器镜像服务
                            容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
                            领券
                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档