SonarQube的安装、配置与使用

316 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

简介

sonarqube 是一个代码质量管理平台,可通过安装不同的插件集成测试工具、代码质量分析工具、持续集成等多种功能。

sonarqube 目前最新版为 8.0,最新稳定版本为 7.9,由于性能原因,sonar 从 7.9 之后就不再 支持 MySQL,替代方案为 PostgreSQL。

这里选择 postgres:12sonarqube:7.9-community 两个 docker 镜像,使用 docker-compose 配置并启动

一、安装篇

编写 docker-compose.yaml 文件

$ mkdir sonar$ cat << 'EOF' | tee sonar/docker-compose.yamlversion: "3"  services:  postgres:    image: postgres:12    container_name: postgres    restart: always    networks:      - sonar    volumes:      - "/etc/localtime:/etc/localtime"      # 持久化存储postgresql数据                                               - "/data/postgresql:/var/lib/postgresql/data"    environment:      # 创建sonarqube所需数据库并授权      - "POSTGRES_USER=sonar"      - "POSTGRES_PASSWORD=sonar"      - "POSTGRES_DB=sonar"   sonar:    image: sonarqube:7.9-community    container_name: sonar    restart: always    depends_on:      - postgres    networks:      - sonar    volumes:      - "/etc/localtime:/etc/localtime"      # 持久化存储sonarqube插件,日志,数据,配置                                               - "/data/sonarqube/extensions:/opt/sonarqube/extensions"      - "/data/sonarqube/logs:/opt/sonarqube/logs"      - "/data/sonarqube/data:/opt/sonarqube/data"      - "/data/sonarqube/conf:/opt/sonarqube/conf"    environment:      # sonarqube连接postgresql配置      - "SONARQUBE_JDBC_USERNAME=sonar"      - "SONARQUBE_JDBC_PASSWORD=sonar"      - "SONARQUBE_JDBC_URL=jdbc:postgresql://postgres:5432/sonar"    labels:      - "traefik.enable=true"      # HTTP访问入口,HTTP自动跳转HTTPS      - "traefik.http.routers.sonar.entrypoints=web"      - "traefik.http.routers.sonar.rule=Host(`sonar.YOU_DOMAIN`)"      - "traefik.http.routers.sonar.middlewares=redirect-to-https"      - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"      # HTTPS访问入口      - "traefik.http.routers.sonar-secure.entrypoints=websecure"      - "traefik.http.routers.sonar-secure.rule=Host(`sonar.YOU_DOMAIN`)"      # 开启TLS      - "traefik.http.routers.sonar-secure.tls=true"      - "traefik.http.routers.sonar-secure.tls.certresolver=default"      # 指定SonarQube的端口,多端口容器需要指定      - "traefik.http.services.sonar-secure.loadbalancer.server.port=9000"   traefik:    image: traefik:2.1    container_name: traefik    restart: always    command:      # 开启api/dashboard      - "--api.dashboard=true"      # 设置provider为docker      - "--providers.docker=true"      - "--providers.docker.exposedbydefault=false"      # 设置http和https入口点      - "--entryPoints.web.address=:80"      - "--entryPoints.websecure.address=:443"      # ACME验证方式,这里选择TLS验证      - "--certificatesresolvers.default.acme.tlschallenge=true"      # 申请证书的邮箱      - "--certificatesResolvers.default.acme.email=YOU_EMAIL"      # 保存ACME证书的位置      - "--certificatesResolvers.default.acme.storage=/letsencrypt/acme.json"    networks:      - sonar    ports:      - "80:80"      - "443:443"    volumes:      - "/etc/localtime:/etc/localtime"                                              - "./letsencrypt:/letsencrypt"      - "/var/run/docker.sock:/var/run/docker.sock"  networks:  sonar:    driver: bridgeEOF

把上面的 YOU_DOMAIN 和 YOU_EMAIL 换成实际的域名和邮箱

二、配置篇

1. 创建持久化 postgresql 和 sonarqube 数据目录

mkdir -pv /data/{postgresql,sonarqube/{conf,data,extensions,logs}}

postgresql 和 sonarqube 镜像都是以 UID 999 的用户启动运行的,需要将持久化数据目录权限更改

chown -R 999.root /data/{postgresql,sonarqube}

2. sonarqube 里集成了 elasticsearch,由于 elasticsearch 占用内存较高,官方要求 vm.max_map_count 需要配置到最小 262144

$ echo "vm.max_map_count = 262144" > /etc/sysctl.d/sonarqube.conf $ sysctl -p /etc/sysctl.d/sonarqube.conf

3. 启动 SonarQube

$ cd sonar $ docker-compose up -d

4.等待一段时间后,在浏览器里输入 sonar.YOU_DOMAIN,即可看到 sonarqube 的 web 页面

默认登录账号密码为 admin/admin

5.按照下图的点击顺序,进入插件安装页面

image.png

6.搜索chinese Pack,安装中文语言包

7.安装成功后,重启sonarqube服务,再次访问http://localhost:9000/,即可看到中文界面

8.右上角创建新项目 test ,项目标识是项目的唯一标识,后面sonar-scanner配置文件会用到

9. 生成令牌,后面sonar-scanner配置文件会用到

三、使用篇

安装 Sonar Scanner

官方教程:docs.sonarqube.org/latest/anal…

可以下载windows版本或者linux版本的

比如我自己下载的windows版本:

binaries.sonarsource.com/Distributio…

配置sonar-scanner

修改配置文件:conf/sonar-project.properties

# must be unique in a given SonarQube instance  创建项目时设置的项目标识sonar.projectKey=test# defaults to project key#sonar.projectName=My project# defaults to 'not provided'#sonar.projectVersion=1.0# sources是源文件所在的目录 Defaults to .#sonar.sources=.#----- Default SonarQube server#sonar.host.url=http://localhost:9000sonar.host.url=https://sonar.phpmianshi.com#----- Default source code encodingsonar.sourceEncoding=UTF-8

配置完成后验证是否配置成功

sonar-scanner -husage: sonar-scanner [options]Options: -D,--define <arg>     Define property -h,--help             Display help information -v,--version          Display version information -X,--debug            Produce execution debug output

在cmd进入项目所在的根目录,输入命令

sonar-scanner -Dsonar.login=myAuthenticationToken

令牌的生成参考:配置篇=>9. 生成令牌,后面sonar-scanner配置文件会用到

也可以参考官网:docs.sonarqube.org/latest/user…

打开sonar.phpmianshi.com,我们会看到主页出现了分析项目的概要图

预知更多使用,请登录官网自行学习。

www.sonarqube.org/

docs.sonarqube.org/display/SON…

www.phpmianshi.com/?id=273