Docker安装部署SonarQube代码审查工具
SonarQube是一种主流的代码质量持续检测工具。可以将其用于代码库的静态和动态分析。SonarQube集成到 KubeSphere流水线后,如果在运行的流水线中检测到问题,可以直接在仪表板上查看常见代码问题,例如 Bug 和漏洞。
1. 安装SonarQube服务器
要将SonarQube 集成到您的流水线,必须先安装 SonarQube 服务器
helm version
version.BuildInfo{Version:"v3.11.1", GitCommit:"293b50c65d4d56187cd4e2f390f0ada46b4c4737", GitTreeState:"clean", GoVersion:"go1.18.10"}
tar xvf helm-v3.11.1-linux-amd64.tar.gz
mv linux-amd64/ helm3
mv ~/helm3/helm /usr/local/bin/
使用helm安装sonarqube:
helm version
version.BuildInfo{Version:"v3.9.0", GitCommit:"7ceeda6c585217a19a1131663d8cd1f7d641b2a7", GitTreeState:"clean", GoVersion:"go1.17.5"}
请您确保使用 Helm 3 安装 SonarQube Server
helm upgrade --install sonarqube sonarqube --repo https://charts.kubesphere.io/main -n kubesphere-devops-system --create-namespace --set service.type=NodePort
Release "sonarqube" does not exist. Installing it now.
NAME: sonarqube
LAST DEPLOYED: Wed Mar 1 20:46:26 2023
NAMESPACE: kubesphere-devops-system
STATUS: deployed
REVISION: 1
NOTES:
1. Get the application URL by running these commands:
export NODE_PORT=$(kubectl get --namespace kubesphere-devops-system -o jsonpath="{.spec.ports[0].nodePort}" services sonarqube-sonarqube)
export NODE_IP=$(kubectl get nodes --namespace kubesphere-devops-system -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
2. 获取SonarQube控制台地址
# export NODE_PORT=$(kubectl get --namespace kubesphere-devops-system -o jsonpath="{.spec.ports[0].nodePort}" services sonarqube-sonarqube)
# export NODE_IP=$(kubectl get nodes --namespace kubesphere-devops-system -o jsonpath="{.items[0].status.addresses[0].address}")
# echo http://$NODE_IP:$NODE_PORT
http://10.1.248.77:32556
3. 配置SonarQube服务器
访问 SonarQube 控制台:
执行以下命令查看 SonarQube 的状态:
kubectl get pod -n kubesphere-devops-system
NAME READY STATUS RESTARTS AGE
sonarqube-postgresql-0 1/1 Running 0 16m
sonarqube-sonarqube-84f6585f85-269bj 1/1 Running 0 16m
只有在 SonarQube启动并运行后才能访问 SonarQube 控制台
在浏览器中访问SonarQube控制台 http://{$Node IP}:{$NodePort}
,然后使用默认帐户 admin/admin 登录
步创建 SonarQube 管理员令牌 (Token):
点击 Security 并输入令牌名称,例如 kubesphere
token码:3bba7b7ed04b23068eb33db670742116499a1335
创建 Webhook 服务器:
执行以下命令获取SonarQube Webhook的地址:
# export NODE_PORT=$(kubectl get --namespace kubesphere-devops-system -o jsonpath="{.spec.ports[0].nodePort}" services devops-jenkins)
# export NODE_IP=$(kubectl get nodes --namespace kubesphere-devops-system -o jsonpath="{.items[0].status.addresses[0].address}")
# echo http://$NODE_IP:$NODE_PORT/sonarqube-webhook/
http://10.1.248.77:/sonarqube-webhook/
预期输出结果:
http://10.1.248.77:/sonarqube-webhook/
依次点击 Administration、Configuration 和 Webhooks创建一个 Webhook:
点击 Create:
在弹出对话框中输入 Name 和 Jenkins Console URL(即 SonarQube Webhook 地址)。点击 Create 完成操作。
4. 为新工程创建SonarQube Token
如果需要单独的项目使用单独的token值,那么就需要创建一个项目,当然也可以多个项目共用admin账号的token
需要一个 SonarQube 令牌,以便您的流水线可以在运行时与 SonarQube 通信
在 SonarQube 控制台上,点击Add a project:
输入工程名称,例如 java-sample,然后点击 Generate:
创建令牌后,点击Continue:
选择Maven复制下图框中的序列号,如果要在流水线中使用,则需要在凭证中添加此序列号
mvn sonar:sonar \
-Dsonar.projectKey=java-demo \
-Dsonar.host.url=http://172.26.160.18:32556 \
-Dsonar.login=ffa87c76f833d8a5f6183a7ed4435d595de963d8