如何优雅的使用SonarQube

563 字
3 分钟
如何优雅的使用SonarQube

1 安装 SonarQube 服务器#

helm upgrade --install sonarqube sonarqube --repo https://charts.kubesphere.io/main -n devops --create-namespace --set image.tag=8.9.1-community

image-20211008152622637
image-20211008152622637

1.1 配置 SonarQubeingress 访问#

cat sonarqube-ingress.yaml

kind: Ingress
apiVersion: extensions/v1beta1
metadata:
name: sonarqube-ingress
namespace: kubesphere-devops-system
annotations:
kubesphere.io/creator: admin
nginx.ingress.kubernetes.io/proxy-body-size: 30M #很重要,不加会上传不了扫描结果
nginx.ingress.kubernetes.io/proxy-buffer-size: 128k
nginx.ingress.kubernetes.io/proxy-buffers-number: '32'
nginx.ingress.kubernetes.io/proxy-connect-timeout: '3600'
nginx.ingress.kubernetes.io/proxy-read-timeout: '3600'
nginx.ingress.kubernetes.io/proxy-send-timeout: '3600'
nginx.ingress.kubernetes.io/client-body-buffer-size: 128k
spec:
rules:
- host: sonar.rx.cn #自己域名
http:
paths:
- path: /
pathType: ImplementationSpecific
backend:
serviceName: sonarqube-sonarqube #service名称
servicePort: 80

kubecat apply -f sonarqube-ingress.yaml -n devops

1.2 配置 dns#

vim /var/named/rx.cn.zone

sonar A 10.188.179.200

1.3 配置 SonarQube 服务器#

1.3.1 配置 SonarQube 插件持久化#

volumeMounts:
- name: volume-plugins
mountPath: /opt/sonarqube/extensions
volumes:
- name: volume-plugins
persistentVolumeClaim:
claimName: sonarqube

1.3.2 配置 SonarQube 的 Webhooks 的返回地址#

kubectl edit configmap sonarqube-sonarqube-config -n devopssonar.core.serverBaseURL=http://sonar.rx.cn

1.4 安装插件#

ls /opt/sonarqube/extensions/plugins

1.5 重启后查看状态查看 SonarQube 的状态#

kubectl get pod -n devops

image-20211008153511911
image-20211008153511911

1.6 访问http://sonar.rx.cn/#

看到这个说明插件安装成功

image-20211008155831855
image-20211008155831855

2 配置 Jenkins 集成 SonarQube#

2.1 创建 SonarQube 管理员令牌 (Token)#

2.1.1 点击右上角字母 A,然后从菜单中选择我的账户以转到配置页面#

image-20211008160644833
image-20211008160644833

2.1.2 输入令牌名称,例如 test,点击生成并复制此令牌#

image-20211008161011835
image-20211008161011835

2.2 Jenkins 安装插件#

image-20211008161535162
image-20211008161535162

访问 Jenkins 地址:端口/sonarqubewebhook 出现这样表示插件安装成功

image-20211008161819246
image-20211008161819246

2.3 配置 sonarqube 的 webhook#

依次点击配置,配置 和 网络调用 创建一个 Webhook。

image-20211008162109996
image-20211008162109996

点击 创建。

在弹出对话框中输入 名称 和 Jenkins Console URL(即 SonarQube Webhook 地址)。点击创建完成操作。

image-20211008162626091
image-20211008162626091

2.4 将 SonarQube 服务器添加至 Jenkins#

2.4.1 Jenkins 添加凭据,凭据 系统 全局凭据#

image-20211008163514903
image-20211008163514903

使用刚才 SonarQube 管理员令牌创建的凭证

image-20211008163802989
image-20211008163802989

2.5 Jenkins 添加 SonarQube 地址#

image-20211008164113416
image-20211008164113416

3 使用 SonarQube 代码扫描#

3.1 新建项目#

image-20211008164214208
image-20211008164214208

image-20211008164236033
image-20211008164236033

3.2 创建项目令牌#

image-20211008164254811
image-20211008164254811

3.3 Jenkins 流水线配置#

sh '''
mvn clean package -U -Dmaven.test.skip=true sonar:sonar \
-Dsonar.projectKey=$APP_NAME-start \ #项目名称变量
-Dsonar.host.url=$SONARURL \ #sonar地址变量
-Dsonar.analysis.branch=$BRANCH_NAME \ #分支变量
-Dsonar.login=$SONARTOKEN #刚才创建的项目token
'''

4 钉钉告警#

下载钉钉机器人插件

启动

nohup ./sonar-dingtalk-plugin-1.0.0-linux &

5 扫描加固#

5.1 配置 p3c 规则#

image-20211008165451207
image-20211008165451207

先清空所有条件在搜索 p3c,然后点批量修改

image-20211008165615562
image-20211008165615562

image-20211008165705014
image-20211008165705014

5.2 配置 bug 扫描,SonarQube 默认自带的就很好用,直接复制过来批量激活#

image-20211008170223594
image-20211008170223594

5.3 配置漏洞扫描,跟刚才差不多#

image-20211008170315780
image-20211008170315780

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

如何优雅的使用SonarQube
https://ccops.cc/posts/d50075ed/
作者
蹦蹦站长
发布于
2021-10-08
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
蹦蹦站长
一个养兔子的运维
公告
感谢你的来访!希望在这里能找到对你有用的内容!
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章
81
分类
6
标签
45
总字数
88,456
运行时长
0
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.12.1
文章许可
CC BY-NC-SA 4.0

文章目录