docker compose容器部署 sonarqube+jenkins+dingtalk钉钉插件通知+中文插件 代码检测。超详细
docker hub : https://hub.docker.com/_/sonarqube
钉钉插件:https://github.com/xbmlz/sonar-dingtalk-plugin
中文包:https://github.com/xuhuisheng/sonar-l10n-zh
sonar客户端:https://docs.sonarsource.com/sonarqube-server/latest/analyzing-source-code/scanners/sonarscanner/
部署sonar并配置
一、提前创目录并加权。 直接容器创会报错权限不足
mkdir -p sonarqube/data sonarqube/extensions postgresql_data
chmod 777 sonarqube/data sonarqube/extensions postgresql_data
二、部署sonar 准备yml文件
注意:sonarqube:lts-community 镜像每次拉 可能都已经更新新版
vim docker-compose.yml
version: "3" services: sonarqube: image: sonarqube:community #默认拉取最新代码。 container_name: sonarqube depends_on: - sonarqubedb environment: SONAR_JDBC_URL: jdbc:postgresql://sonarqubedb:5432/sonar SONAR_JDBC_USERNAME: sonar SONAR_JDBC_PASSWORD: sonar volumes: - /etc/localtime:/etc/localtime:ro - ./sonarqube2/conf:/opt/sonarqube/conf - ./sonarqube2/data:/opt/sonarqube/data - ./sonarqube2/extensions:/opt/sonarqube/extensions ports: - "19000:9000" - "19002:9010" networks: - qita sonarqubedb: image: postgres container_name: sonarqubedb environment: POSTGRES_USER: sonar POSTGRES_PASSWORD: sonar volumes: - /etc/localtime:/etc/localtime:ro - ./sonarqube2/postgresql_data:/var/lib/postgresql/data networks: - qita
#钉钉通知插件 sonarqubedingding: image: xbmlz/sonar-dingtalk-plugin container_name: sonarqubedingding restart: always ports: - "9010:9010" volumes: - /etc/localtime:/etc/localtime:ro networks: - qita networks: qita: external: true
三、启动sonar
docker compose -f docker-compose.yml up -d
四、设置中文
包地址在上面。 下载后运行 。 下载最新版本的,和上面sonar最新版本一般都会兼容

翻译包拷贝到容器内 重启
docker cp sonar-l10n-zh-plugin-8.9.jar sonarqube:/opt/sonarqube/lib/extensions/ docker restart sonarqube
五、进入sonar页面,并登录
http://you_ip:19000/ 修改你的ip。 登录进去后修改账号密码 ,默认admin/admin 此处登录忽略
六、创建钉钉机器人
进入想告警的钉钉群


复制webhook token=***的值 。 https://oapi.dingtalk.com/robot/send?access_token=**********
安全设置

七、配置sonar机器人
版本不一样,设置的地方是一样的


名称随便,URL填 http://插件部署电脑的IP:9010/dingtalk?access_token=机器人的token&sonar_token=令牌
端口上面yml文件是什么。就写什么
新版本必须使用令牌


上方网络调用可以改成以下的
URL填 http://插件部署电脑的IP:9010/dingtalk?access_token=机器人的token&sonar_token=令牌
八、指定本机sonar ip
不然钉钉无法通知


九、提前展示效果,需要jenkins配置完

配置jenkins
一、准备dockerfile文件
我这边是通过jenkins去替换dockerfile相关的值。注意 下方dockerfile中RUN 后面的备注 需要删掉
后端dockerfile
前端dockerfile
#需要有node环境
FROM sonarsource/sonar-scanner-cli
#前端代码拷贝到容器中(多套代码仓库) COPY aaa /opt/aaa COPY bbb /opt/bbb COPY ccc /opt/ccc COPY ddd /opt/ddd USER root RUN echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" \ && echo "检测开始" && echo "%%%%%%%%%%" #777 是服务名称 #删除不扫描的文件 ,这里删除静态资源图片等 RUN find /opt/ -type d -name "img" -exec rm -rf {} + \ && find /opt/ -type d -name "assets" -exec rm -rf {} + WORKDIR /opt/ RUN sonar-scanner \ -Dsonar.projectName=777 \ -Dsonar.projectKey=777 \ -Dsonar.sourceEncoding=UTF-8 \ -Dsonar.host.url=http://192.168.1.1:19000 \ -Dsonar.token=squ_*********3f538719c135e42 \ -Dsonar.javascript.nodejs.version=20 \ #指定node版本 -Dsonar.nodejs.executable=/usr/bin/node \ #指定node命令位置 -Dsonar.npm.executable=/usr/bin/npm \ #指定npm命令位置 -Dsonar.modules=aaa,bbb,ccc,ddd \ #指定所有仓库名称 -Daaa.sonar.projectBaseDir=/opt/aaa \ #指定第一个仓库名称 变量跟着改 -Daaa.sonar.sources=src \ -Daaa.sonar.projectName=aaa-dev \ -Daaa.sonar.praaojectKey=aaa-dev \ -Dbbb.sonar.projectBaseDir=/opt/bbb \ #指定第二个仓库 -Dbbb.sonar.sources=src \ -Dbbb.sonar.projectName=bbb-dev \ -Dbbb.sonar.projectKey=bbb-dev \ -Dccc.sonar.projectBaseDir=/opt/ccc \ #指定第三个 -Dccc.sonar.sources=src \ -Dccc.sonar.projectName=ccc-dev \ -Dccc.sonar.projectKey=ccc-dev
#以此类推
RUN echo "检测结束" && echo "%%%%%%%%%%" \ && echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
二、配置jenkins脚本
#环境准备, 创建目录 进入目录,拉下来的代码移过去
mkdir ../build-test
rm -rf ../build-test/*
cd ../build-test
\mv ../$JOB_NAME ./
#拷贝sonar客户端工具 和上面的dockerfile文件
\cp ../dockerfile/service/dockerfile-sonar ./dockerfile-sonar
#替换dockerfile中的固定值
sed -i "s/777/testtest/g" dockerfile-sonar #testtest改成自己相关任务名称,sonar展示
sed -i "s/123/$JOB_NAME/g" dockerfile-sonar #代码仓库名称
#构建镜像
docker build -t test:test11 -f mvnjdkfile .
三、查看构建效果
jenkins构建日志中会体现




尊重别人的经验。分享页面请附带此地址 。谢谢

浙公网安备 33010602011771号