转载请注明出处,本文仅用于学习交流,不对之处,恳请指正,部分图片摘取网络,如有侵权请联系
使用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虚拟机中部署了一套
-
配置/etc/sysctl.conf文件
echo "vm.max_map_count=524288" >> /etc/sysctl.conf
echo "fs.file-max=131072" >> /etc/sysctl.conf
-
执行生效
sysctl -p
-
配置/etc/profile文件
echo "ulimit -u 8192" >> /etc/profile
echo "ulimit -n 131072" >> /etc/profile
-
执行生效
source /etc/profile
使用Docker部署PostgresSQL
直接执行以下代码,在默认网络中部署一个名为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
部分参数说明:
- -e POSTGRES_USER:用户名
- -e POSTGRES_PASSWORD:用户密码
- -e POSTGRES_DB:创建的数据库名
- -v postgresql_data:挂载/var/lib/postgresql/data的虚拟磁盘
使用Docker部署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
部分参数说明:
- -p 9000:9000:映射9000端口
- --link postgres:postgres: 连接到postgres容器,并设置别名为postgres
- -e sonar.jdbc.username:连接到Postgress数据库的用户名
- -e sonar.jdbc.password:连接到Postgress数据库的用户密码
- -e sonar.jdbc.url:连接的数据库,可以是MySQL等其他数据库
- -v sonarqube_data:挂载/opt/sonarqube/data的虚拟磁盘
- -v sonarqube_extensions:挂载/opt/sonarqube/extensions的虚拟磁盘
- -v sonarqube_logs:挂载/opt/sonarqube/logs的虚拟磁盘
使用docker-compose部署PostgresSQL跟SonarQube
使用此方式,相较于上面的做法的区别是,使用docker-compose可以更快速的部署完成复杂的关联性容器。同时compose会生成自己的网络段,当然你也可以使用已有的网络段。
-
在用户目录下新建一个存放脚本的目录
mkdir -p ~/docker/sonar
-
创建脚本文件
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:
-
进入该目录
cd ~/docker/sonar/
-
运行
docker-compose up -d
-
效果
SonarQube设置
-
使用浏览器打开http://localhost:9000,默认账号为admin,默认密码admin
-
第一次登录后会要求修改密码
-
进入后在首页点击Add a Project
-
我们暂时先选择Manually,后续需要其他的服务请自行配置
-
输入你的项目key值,请认真设置,后续配置需要使用
-
生成token,请认真填写,并记录下token,后续配置需要使用
-
完成token配置后,我们在第二步选择Gradle,接下来我们就可以根据提示进行Android Studio的配置了
Android Studio配置SonarQube
Android Studio安装SonarQube插件
进入Android Studio,在File -> Setting -> Plugin中搜索SonarLint,并安装后重启IDEA
SonarQube插件设置
安装SonarLint插件并重启Android Studio后,我们可以在File -> Setting -> Tools中看到SonarLint选项
-
新增链接
-
我们选择SonarQube,URL填写:http://localhost:9000
-
填写我们在SonarQube Web中创建的token(也可以使用账号密码),然后一路确定即可
-
在SonarLint的Project Settings子项中
- Connection选中前面创建的链接
- 点击Search in list
- 选中你在SonarQube Web中配置的项目
- 点击确定后,插件就配置完成了
Gradle配置SonarQube
-
编辑项目根目录的build.gradle,在buildscript中的dependencies加入
classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.3"
-
在module(比如app,library)下的build.gradle加入SonarQube插件
apply plugin: "org.sonarqube"
-
在所需要检测的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 } }
-
配置完成后重载一下Gradle,至此配置完成
执行代码扫描
单击配置前面的运行按钮,或在gradle的task中找到sonarqube,双击执行
文章评论