SonarQube代码审计工具整合Jenkins

SonarQube是一个开源的代码审计工具,用来持续分析和评测项目源代码的质量。通过SonarQube我们可以检测出项目中重复的代码,潜在bug,代码规范,安全性漏洞等,并通过SonarQube的web界面展示出来

1、Docker安装SonarQube平台

  • SonarQube是需要使用postgresql数据库
  • docker部署SonarQube平台
#拉取SonarQube和postgresql的镜像
docker pull sonarqube:8.9.6-community
docker pull postgres
]# docker images
REPOSITORY        TAG               IMAGE ID       CREATED         SIZE
postgres          latest            07e2ee723e2d   14 months ago   374MB
sonarqube         8.9.6-community   3f623568fa64   14 months ago   497MB
#创建一个工作目录
mkdir -p /usr/local/docker/sonarqube_docker
cd /usr/local/docker/sonarqube_docker
#编写docker-compose.yaml文件
vim docker-compose.yaml
version: '3.1'
services:
  db:
    image: postgres
    container_name: db
    ports:
      - 5432:5432        #默认端口为5432
    networks:
      - sonarnet
    environment:
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: sonar
  sonarqube:
    image: sonarqube:8.9.6-community
    container_name: sonarqube
    depends_on:          #在sonarqube容器启动是依赖于db容器的,先启动postgres容器
      - db
    ports:
      - 9000:9000          #默认端口为9000
    networks:
      - sonarnet
    environment:        #连接数据库配置
      SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
      SONAR_JDBC_USERNAME: sonar
      SONAR_JDBC_PASSWORD: sonar
    volumes:
      - /etc/timezone:/etc/timezone
      - /etc/localtime:/etc/localtime
networks:
  sonarnet:
    driver: bridge

#启动
docker-compose up -d
  • 打开浏览器,访问http://IP:9000
    首次登录
    用户名:admin
    密码:admin

    image.png

    登陆后修改密码

2、SonarQube基本使用

  • 安装中文插件
    image.png

    image.png

    重启后
    image.png
  • 代码检测方法
    方法一:使用maven命令进行扫描
#修改idea所在电脑的maven目录中的setting.xml文件配置
... ...
<profile>
        <id>sonar</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <sonar.login>admin</sonar.login>
            <sonar.password>hongkai123</sonar.password>
            <sonar.host.url>http://192.168.2.101:9000</sonar.host.url>
        </properties>
    </profile>
... ...
在idea工具的命令行中进行代码检测
 F:\xiangmu\demo> mvn sonar:sonar
image.png

此时在sonarqube网页上会看到一个检测项目


image.png

方法二:使用Sonar-scanner进行扫描
sonar-scanner插件下载地址:https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.8.0.2856-linux.zip

]# wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.8.0.2856-linux.zip
#下载解压zip压缩包的工具
]# yum install -y unzip
#解压工具
]# unzip sonar-scanner-cli-4.8.0.2856-linux.zip
]# mv sonar-scanner-4.8.0.2856-linux/ sonar-scanner
#将sonar-scanner移动到Jenkins的docker数据卷目录中
mv ~/sonar-scanner /usr/local/docker/jenkins_docker/data/
#修改配置文件
cd /usr/local/docker/jenkins_docker/data/sonar-scanner/conf
]# vim sonar-scanner.properties
sonar.host.url=http://192.168.2.101:9000
sonar.sourceEncoding=UTF-8
#注:该文件可以不指定用户名密码,可以通过sonarqube服务提供的token来使用

进入workspace工作目录来进行扫描

cd /usr/local/docker/jenkins_docker/data/workspace
#开始扫描
[root@jenkins mytest]# /usr/local/docker/jenkins_docker/data/sonar-scanner/bin/sonar-scanner -Dsonar.source=./ -Dsonar.projectname=linux-test -Dsonar.login=4a07a971591176830b953903d49e76281160d05d -Dsonar.projectKey=linux-test -Dsonar.java.binaries=./target

报错如下:
1.需要指明token或用户名密码


image.png

2.token生成


image.png

3.加上token后,又报错,需要指定一个projectKey随意设
image.png

4.加上project.key后又报错,不知道sonar.java.binaries在哪,指定jar包文件夹
image.png

5.添加好后查看sonarqube网页


image.png

3、SonarQube整合Jenkins

  • 在Jenkins上安装Sonar-scanner插件


    image.png
  • 系统配置,让Jenkins可以连接上Sonarqube服务


    image.png

    image.png
  • 全局配置


    image.png
  • 配置构建任务
    image.png

    工作目录为/var/jenkins_home/workspace/mytest
    image.png
  • 构建任务
    出现报错


    image.png
#进入工作目录,删除该隐藏文件
[root@jenkins local]# cd /usr/local/docker/jenkins_docker/data/workspace/
[root@jenkins workspace]# cd mytest
[root@jenkins mytest]# ls
docker  mvnw  mvnw.cmd  pom.xml  src  target
[root@jenkins mytest]# ls -a
.  ..  docker  .git  .gitignore  .mvn  mvnw  mvnw.cmd  pom.xml  .scannerwork  src  target
[root@jenkins mytest]# rm -rf .scannerwork/
[root@jenkins mytest]# ls -a
.  ..  docker  .git  .gitignore  .mvn  mvnw  mvnw.cmd  pom.xml  src  target

重新构建
成功检测,sonarqube网页也有检测记录


image.png

image.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容