SonarQube

162 阅读2分钟

部署sonarqube

version: "3"



services:

  sonarqube:

    image: sonarqube:community

    depends_on:

      - db

    environment:

      SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar

      SONAR_JDBC_USERNAME: sonar

      SONAR_JDBC_PASSWORD: sonar

    volumes:

      - sonarqube_data:/opt/sonarqube/data

      - sonarqube_extensions:/opt/sonarqube/extensions

      - sonarqube_logs:/opt/sonarqube/logs

    ports:

      - "9000:9000"

  db:

    image: postgres:12

    environment:

      POSTGRES_USER: sonar

      POSTGRES_PASSWORD: sonar

    volumes:

      - postgresql:/var/lib/postgresql

      - postgresql_data:/var/lib/postgresql/data


    ports:
      - "5432:5432"

volumes:

  sonarqube_data:

  sonarqube_extensions:

  sonarqube_logs:

  postgresql:

  postgresql_data:

在SonarQube社区版中,是只能有一个分支被扫描的,需要通过插件的形式来扩展这部分功能 或者直接安装带插件版本的sonarqube

插件地址:github.com/mc1arke/son…

打开插件地址,需要注意的是,不同的SonarQube版本使用的插件版本也不一样,我已经安装的SonarQube为9.6.0,所以下载的插件版本应该是1.12.0

image.png

下载完插件之后,上传到服务器的 /var/lib/docker/volumes/sonarqube_sonarqube_extensions/_data/plugins 目录下

进入容器

docker exec -it sonarqube /bin/bash

找到了/conf 目录下的sonar.properties文件,然后进行了修改

修改配置如下:

sonar.web.javaAdditionalOpts=-javaagent:./extensions/plugins/sonarqube-community-branch-plugin-1.12.0.jar=web
sonar.ce.javaAdditionalOpts=-javaagent:./extensions/plugins/sonarqube-community-branch-plugin-1.12.0.jar=ce

此时重启SonarQube应该就是可以了。

在回到项目中,可以通过增加 -Dsonar.branch.name 参数来对不同分支的代码进行扫描

Jenkins集成sonarqube

jenkins上安装sonarqube scanner插件

image.png 这里手动为了兼容性选择较低的版本 plugins.jenkins.io/sonar/relea… image.png

image.png

image.png

jenkins上关联sonarqube服务器

生成token 用于jenkins调用

image.png

jenkins拿到刚才的token创建令牌绑定

image.png

通过“系统管理->系统设置”配置SonarQube Server

勾上“Enable injection of SonarQube server configuration ...”选项,输入“Name”、“Server URL”以及“Server authentication token”。token为前面创建的令牌

image.png

配置SonarQube Scanner工具

进入“系统管理”-“全局工具配置”-“SonarQube Scanner”

image.png

sonarqube关联gitlab

gitalb上创建sonar的令牌

image.png

image.png

点击gitlab 填入刚才创建的令牌 这样以后就能从gitab生成项目