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相关的值

#123 是代码仓库
#777 是服务名称
#666 是代码包的目录target
复制代码

#这里是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构建日志中会体现

 

 

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

 

posted @   mrdongdong  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示