Alain's Blog

  1. 首页
  2. Android
  3. 正文

使用Docker部署SonarQube,并在Android Studio配置SonarQube

2022年9月15日 1277点热度 1人点赞 0条评论

SonarQube

转载请注明出处,本文仅用于学习交流,不对之处,恳请指正,部分图片摘取网络,如有侵权请联系

使用Docker部署SonarQube

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。百度百科

Windows安装Docker
Mac安装Docker
Linux安装Docker: Ubuntu,Debian,OpenEuler,CentOS

准备工作

根据官方文档的描述,我们对以下参数进行调整

参数调整

Windows环境

由于公司的规定,不能使用公司允许之外的在线工具,所以我选择在公司的Windows笔记本上使用Docker进行本地环境的部署

在个人目录(一般位于"C:\User\${username}")下,创建一个.wslconfig的文件

写入以下代码

[wsl2]
kernelCommandLine = "sysctl.vm.max_map_count=524288 sysctl.fs.file-max=131072"

我暂时没有找到WSL的ulimit持久化设置的方法,但是看起来目前没有影响到程序的正常运行

Linux环境

由于我有自己的Home Lab,所以...也在OpenEuler虚拟机中部署了一套

  1. 配置/etc/sysctl.conf文件

    echo "vm.max_map_count=524288" >> /etc/sysctl.conf
    echo "fs.file-max=131072" >> /etc/sysctl.conf
  2. 执行生效

    sysctl -p
  3. 配置/etc/profile文件

    echo "ulimit -u 8192" >> /etc/profile
    echo "ulimit -n 131072" >> /etc/profile
  4. 执行生效

    source /etc/profile

使用Docker部署PostgresSQL

Docker Hub | Postgres

直接执行以下代码,在默认网络中部署一个名为postgres的postgres 14.5版本的容器实例,并将数据挂载到名为postgresql_data的虚拟磁盘。

docker run -d \
  --name postgres \
  --restart always \
  -e POSTGRES_USER=sonar \
  -e POSTGRES_PASSWORD=sonar \
  -e POSTGRES_DB=sonar \
  -e TZ=Asia/Shanghai \
  -v postgresql:/var/lib/postgresql \
  -v postgresql_data:/var/lib/postgresql/data \
  postgres:14.5

部分参数说明:

  1. -e POSTGRES_USER:用户名
  2. -e POSTGRES_PASSWORD:用户密码
  3. -e POSTGRES_DB:创建的数据库名
  4. -v postgresql_data:挂载/var/lib/postgresql/data的虚拟磁盘

使用Docker部署SonarQube

Docker Hub | SonarQube

直接执行以下代码,在默认网络中部署一个名为sonarqube的sonarqube 8.9.9-community版本的容器实例,并连接到postgres

docker run -d \
  --name sonarqube \
  --restart=always \
  -p 9000:9000  \
  --link postgres:postgres \
  -e sonar.jdbc.username=sonar \
  -e sonar.jdbc.password=sonar \
  -e sonar.jdbc.url=jdbc:postgresql://postgres:5432/sonar \
  -e TZ=Asia/Shanghai \
  -v sonarqube_data:/opt/sonarqube/data \
  -v sonarqube_extensions:/opt/sonarqube/extensions \
  -v sonarqube_logs:/opt/sonarqube/logs \
  sonarqube:8.9.9-community

部分参数说明:

  1. -p 9000:9000:映射9000端口
  2. --link postgres:postgres: 连接到postgres容器,并设置别名为postgres
  3. -e sonar.jdbc.username:连接到Postgress数据库的用户名
  4. -e sonar.jdbc.password:连接到Postgress数据库的用户密码
  5. -e sonar.jdbc.url:连接的数据库,可以是MySQL等其他数据库
  6. -v sonarqube_data:挂载/opt/sonarqube/data的虚拟磁盘
  7. -v sonarqube_extensions:挂载/opt/sonarqube/extensions的虚拟磁盘
  8. -v sonarqube_logs:挂载/opt/sonarqube/logs的虚拟磁盘

使用docker-compose部署PostgresSQL跟SonarQube

使用此方式,相较于上面的做法的区别是,使用docker-compose可以更快速的部署完成复杂的关联性容器。同时compose会生成自己的网络段,当然你也可以使用已有的网络段。

  1. 在用户目录下新建一个存放脚本的目录

    mkdir -p ~/docker/sonar
  2. 创建脚本文件

    nano ~/docker/sonar/docker-compose.yml

    写入以下代码

    version: "3"
    
    services:
    
      sonarqube:
        image: sonarqube:8.9.9-community
        container_name: sonarqube
        restart: always
        depends_on:
          - db
        environment:
          SONAR_JDBC_USERNAME: sonar
          SONAR_JDBC_PASSWORD: sonar
          SONAR_JDBC_URL: jdbc:postgresql://postgres:5432/sonar
          TZ: Asia/Shanghai
        volumes:
          - sonarqube_data:/opt/sonarqube/data
          - sonarqube_extensions:/opt/sonarqube/extensions
          - sonarqube_logs:/opt/sonarqube/logs
        ports:
          - "9000:9000"
    
      postgres:
        image: postgres:14.5
        container_name: postgres
        restart: always
        environment:
          TZ: Asia/Shanghai
          POSTGRES_USER: sonar
          POSTGRES_PASSWORD: sonar
          POSTGRES_DB: sonar
        volumes:
          - postgresql:/var/lib/postgresql
          - postgresql_data:/var/lib/postgresql/data
    
    volumes:
      sonarqube_data:
      sonarqube_extensions:
      sonarqube_logs:
      postgresql:
      postgresql_data:
  3. 进入该目录

    cd ~/docker/sonar/
  4. 运行

    docker-compose up -d
  5. 效果

    docker-compose效果图

SonarQube设置

  1. 使用浏览器打开http://localhost:9000,默认账号为admin,默认密码admin

  2. 第一次登录后会要求修改密码

  3. 进入后在首页点击Add a Project

  4. 我们暂时先选择Manually,后续需要其他的服务请自行配置

    Add a Project

  5. 输入你的项目key值,请认真设置,后续配置需要使用

    配置Key值

  6. 生成token,请认真填写,并记录下token,后续配置需要使用

    生成token

  7. 完成token配置后,我们在第二步选择Gradle,接下来我们就可以根据提示进行Android Studio的配置了

    SonarQube Gradle

Android Studio配置SonarQube

Android Studio安装SonarQube插件

进入Android Studio,在File -> Setting -> Plugin中搜索SonarLint,并安装后重启IDEA

SonarQube插件

SonarQube插件设置

安装SonarLint插件并重启Android Studio后,我们可以在File -> Setting -> Tools中看到SonarLint选项

  1. 新增链接

    新增SonarQube链接

  2. 我们选择SonarQube,URL填写:http://localhost:9000

    URL填写

  3. 填写我们在SonarQube Web中创建的token(也可以使用账号密码),然后一路确定即可

    填写token

  4. 在SonarLint的Project Settings子项中

    1. Connection选中前面创建的链接
    2. 点击Search in list
    3. 选中你在SonarQube Web中配置的项目
    4. 点击确定后,插件就配置完成了

    完成SonarQube插件的配置

Gradle配置SonarQube

  1. 编辑项目根目录的build.gradle,在buildscript中的dependencies加入

    classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.3"

    Gradle配置SonarQube

  2. 在module(比如app,library)下的build.gradle加入SonarQube插件

    apply plugin: "org.sonarqube"
  3. 在所需要检测的module(比如app,library)下的build.gradle追加SonarQube配置

    sonarqube {
        properties {
            // Server URL
            property "sonar.host.url", "http://localhost:9000"
            // Project Key what you setup on the SonarQube Web
            property "sonar.projectKey", "your_project_key"
            // login via token
            property "sonar.login", "2212cd19ad82f773982cf1236eff0c6d04006ee8"
            // login via account
            // property "sonar.login", "your_account"
            // property "sonar.password", "your_password"
            // limit source directory
            // property "sonar.sources", "src/main/java"
            property "sonar.projectVersion", project.version
        }
    }
  4. 配置完成后重载一下Gradle,至此配置完成

执行代码扫描

单击配置前面的运行按钮,或在gradle的task中找到sonarqube,双击执行

执行代码扫描

执行代码扫描

效果

效果图

参考

  1. https://github.com/SonarSource/docker-sonarqube
  2. https://stackoverflow.com/questions/69214301/using-docker-desktop-for-windows-how-can-sysctl-parameters-be-configured-to-per/69294687#69294687
  3. https://docs.sonarqube.org/latest/requirements/requirements
  4. https://www.jianshu.com/p/48d58cf90965
标签: Android Docker Gradle SonarQube
最后更新:2022年11月16日

Alain

看了我的文,就是我的人,点个赞再走成不成

点赞
< 上一篇
下一篇 >

文章评论

取消回复

文章目录
  • 使用Docker部署SonarQube
    • 准备工作
    • 使用Docker部署PostgresSQL
    • 使用Docker部署SonarQube
    • 使用docker-compose部署PostgresSQL跟SonarQube
  • SonarQube设置
  • Android Studio配置SonarQube
    • Android Studio安装SonarQube插件
    • Gradle配置SonarQube
    • 执行代码扫描
  • 效果
  • 参考

COPYRIGHT © 2022 Alain's Blog. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang