代码质量工具 Sonarqube + Jenkins 搭建集成

环境说明

CentOS 7.4.1708
postgres:12.3
sonarqube:8.4.2-community

# 创建存储卷
docker volume create --name sonarqube_data
docker volume create --name sonarqube_extensions
docker volume create --name sonarqube_logs

# sonar 不能直接挂载本地目录,否则语言没法正常安装上
# mkdir -p /data2/sonar/sonarqube/{extensions,logs,data,conf}
mkdir -p /data2/sonar/postgres/{postgresql,data}

docker pull postgres:12.3
docker pull sonarqube:8.4.2-community

cd /data2/sonar
# 使用 docker-compose 管理
cat docker-compose.yml 
version: '3'
services:
  postgres:
    image: postgres:12.3
    restart: always
    container_name: postgres
    ports:
      - 5432:5432
    volumes:
      - /data2/sonar/postgres/postgresql:/var/lib/postgresql
      - /data2/sonar/postgres/data:/var/lib/postgresql/data
      - /etc/localtime:/etc/localtime:ro
    environment:
      TZ: Asia/Shanghai
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: sonar
      POSTGRES_DB: sonar

  sonar:
    image: sonarqube:8.2-community
    container_name: sonar
    depends_on:
      - postgres
    volumes:
      - sonarqube_extensions:/opt/sonarqube/extensions
      - sonarqube_logs:/opt/sonarqube/logs
      - sonarqube_data:/opt/sonarqube/data
      # 设置与宿主机时间同步
      - /etc/localtime:/etc/localtime:ro
    ports:
      - 9000:9000
    command:
      # 内存设置
      - -Dsonar.ce.javaOpts=-Xmx2048m
      - -Dsonar.web.javaOpts=-Xmx2048m
      # 设置服务代理路径
      - -Dsonar.web.context=/
      # 此设置用于集成gitlab时,回调地址设置
      - -Dsonar.core.serverBaseURL=https://sonarqube.example.com
    environment:
      TZ: Asia/Shanghai
      SONARQUBE_JDBC_USERNAME: sonar
      SONARQUBE_JDBC_PASSWORD: sonar
      SONARQUBE_JDBC_URL: jdbc:postgresql://postgres:5432/sonar

volumes:
  sonarqube_extensions:
    external:
      name: sonarqube_extensions
  sonarqube_logs:
    external:
      name: sonarqube_logs
  sonarqube_data:
    external:
      name: sonarqube_data

# 启动 
docker-compose up -d

访问服务器的 9000 端口,默认密码为 admin/admin, 安装中文插件

配置用户的 token,用于 jenkins 使用,记得保存~

配置 Jenkins

安装插件

SonarQube Scanner for Jenkins

配置 SonarQube servers

系统管理 -》 SonarQube servers

Server authentication token 为 sonar 创建一个 Secret text 类型的凭证,Secret 为 上面的 token 值

配置项目

在项目中加入 Execute SonarQube Scanner

配置 Analysis properties

sonar.projectKey=dev3-test
sonar.projectName=dev3-test
sonar.projectVersion=1.0

sonar.language=java
sonar.sourceEncoding=UTF-8

sonar.sources=$WORKSPACE
sonar.java.binaries=$WORKSPACE

成功运行后,可以回到 sonarqube 查看问题

或者可以在 jenkins 执行 shell 时候指定

mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.7.0.1746:sonar -Dsonar.host.url=http://YOUR_IP:9000 -Dsonar.projectKey=${JOB_NAME} -Dsonar.login=admin -Dsonar.password=admin

安装参考 https://www.cnblogs.com/paopaohll/p/13223433.html

原文地址:https://www.cnblogs.com/klvchen/p/13601681.html