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/releases/tag/sonar-l10n-zh-plugin-8.9
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:lts-community #lta-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 - ./sonarqube/conf:/opt/sonarqube/conf - ./sonarqube/data:/opt/sonarqube/data - ./sonarqube/extensions:/opt/sonarqube/extensions ports: - "19000:9000" #数据库 sonarqubedb: image: postgres container_name: sonarqubedb environment: POSTGRES_USER: sonar POSTGRES_PASSWORD: sonar volumes: - /etc/localtime:/etc/localtime:ro - ./postgresql_data:/var/lib/postgresql/data #钉钉插件 sonarqubedingding: image: xbmlz/sonar-dingtalk-plugin container_name: sonarqubedingding restart: always ports: - "9010:9010" volumes: - /etc/localtime:/etc/localtime:ro
三、启动sonar
docker compose -f docker-compose.yml up -d
四、设置中文
包地址在上面。 下载后运行
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
端口上面yml文件是什么。就写什么
八、指定本机sonar ip
九、提前展示效果,需要jenkins配置完
配置jenkins
一、准备dockerfile文件
我这边是通过jenkins去替换dockerfile相关的值
#这里是gitlab拉下来打jar包
FROM java:8 AS test
COPY 123 /opt/123
RUN cd /opt/123 && mvn clean package -U -Dmaven.test.skip=true -T 2 \
&& mv 666/*.jar 666/test.jar
#打完的包的仓库 拷贝到sonar 容器进行检测代码。并把sonar cli客户端拷贝到容器(下载地址在最上方)
FROM hacbq/java11:latest AS sonarsonar
COPY sonar /opt/sonar
COPY --from=test /opt/123 /opt/123
RUN chmod +x /opt/sonar/bin/sonar-scanner \
&& echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" \
&& echo "检测开始" && echo "%%%%%%%%%%"
RUN /opt/sonar/bin/sonar-scanner \
-Dsonar.projectName=777 \ # 项目名称
-Dsonar.projectKey=777 \ # 项目唯一标识符
-Dsonar.java.binaries=666 \ # Java 二进制文件的路径
-Dsonar.sources=/opt/123 \ # 源代码目录
-Dsonar.projectBaseDir=/opt/123 \ # 项目根目录
-Dsonar.sourceEncoding=UTF-8 \ # 源代码的字符编码
-Dsonar.host.url=http://192.168.1.1:19000 \ # SonarQube 服务器地址,自行修改
-Dsonar.login=admin \
-Dsonar.password=admin #sonar 账号密码 自行修改
RUN echo "检测结束" && echo "%%%%%%%%%%" \
&& echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
#最后把包拷贝到最小镜像运行
FROM java8alpine:v1
COPY --from=test 666/test.jar /home/test/test.jar
WORKDIR /home/test
ENTRYPOINT ["java","-jar","test.jar"]
CMD ["--debug"]
二、配置jenkins脚本
#环境准备, 创建目录 进入目录,拉下来的代码移过去
mkdir ../build-test
rm -rf ../build-test/*
cd ../build-test
\mv ../$JOB_NAME ./
#拷贝sonar客户端工具 和上面的dockerfile文件
\cp -r ../docksrfile/sonarqube/sonar ./sonar
\cp ../dockerfile/service/dockerfile-sonar ./mvnjdkfile
#指定包所在位置
jar_path="/opt/123/test/target"
#替换dockerfile中的固定值
sed -i "s/777/testtest/g" mvnjdkfile #testtest改成自己相关任务名称
sed -i "s#666#$jar_path#g" mvnjdkfile #666 改成包所在位置
sed -i "s/123/$JOB_NAME/g" mvnjdkfile #默认 不用改
#构建镜像
docker build -t test:test11 -f mvnjdkfile .
三、查看构建效果
jenkins构建日志中会体现
尊重别人的经验。分享页面请附带此地址 。谢谢
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)