Linux+docker+mysql+sonarqube+gitlab代码审查
代码自动审查环境搭建
准备
安装docker
1 2 3 4 5 6 7 8 9 10 11 12 | yum install -y yum-utils device-mapper-persistent-data lvm2 gcc gcc-c++ yum-config-manager --add-repo https: //mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum makecache fast yum -y install docker-ce sudo tee /etc/docker/daemon.json <<- 'EOF' { "registry-mirrors" : [ "http://hub-mirror.c.163.com" , "https://docker.mirrors.ustc.edu.cn" , "https://registry.docker-cn.com" ] } EOF sudo systemctl daemon-reload sudo systemctl restart docker docker info #查看镜像 |
上传容器镜像
1 2 3 4 5 6 7 8 9 10 11 12 | mysql-5.7.tar #mysql容器镜像包 gitlab.tar sonarqube-7.7.tar gitlab-runner.tar sonar-scanner-cli.tar sonar-l10n-zh-plugin-1.26.jar #sonar中文补丁 sonar-css-plugin-1.0.3.724.jar #代码检测文件 sonar-gitlab-plugin-4.1.0-SNAPSHOT.jar sonar-php-plugin-2.16.0.4355.jar sonar-html-plugin-3.1.0.1615.jar #容器镜像可以通过docker pull 镜像,也可以rz上传 #https://github.com/xuhuisheng/sonar-l10n-zh/releases/tag/sonar-l10n-zh-plugin-1.26 |
加载镜像
1 2 | docker load < gitlab.tar #docker加载gitlab镜像,其他镜像同样操作 #docker save > gitlab.tar gitlab:latest #导出docker镜像 |
建立docker持久化文件夹
1 2 3 4 5 6 | cd /home mkdir -p mysql/{conf,data,log} mkdir -p gitlab/{config,logs,data} mkdir -p sonarqube/{data,extensions,logs} chmod -R 777 sonarqube mkdir -p gitlab-runner/config |
安装
运行mysql
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | docker run -p 3306:3306 --name mysql \ -v /home/mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf \ -v /home/mysql/data/:/ var /lib/mysql/ \ -v /home/mysql/log/:/ var /log/mysql/ \ -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 docker exec -it mysql /bin/bash mysql -uroot -p123456 create database sonar; grant all privileges on *.* to sonar@ '%' identified by '123456' ; flush privileges; #表可以不建 use sonar; create table student(id int ,name varchar(40),age int ,PRIMARY KEY(id)) ENGINE=InnoDB DEFAULT CHARSET=utf8; insert into student(id,name,age) values (1, '里斯' , '20' ); exit exit |
运行sonarqube
1 2 3 4 5 6 7 8 9 10 | docker run -d -p 9000:9000 \ -e "SONARQUBE_JDBC_URL=jdbc:mysql://192.168.31.131:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false" \ -e "SONARQUBE_JDBC_USERNAME=sonar" \ -e "SONARQUBE_JDBC_PASSWORD=123456" \ -v /home/sonarqube/data:/opt/sonarqube/data \ -v /home/sonarqube/extensions:/opt/sonarqube/extensions \ -v /home/sonarqube/logs:/opt/sonarqube/logs \ --name sonarqube sonarqube:7.7-community #ip地址填写宿主机的地址即可 #建议添加 --restart always \ |
汉化sonarqube及增加语言包
1 2 3 4 5 6 7 | mkdir /home/sonarqube/extensions/plugins cp sonar-l10n-zh-plugin-1.26.jar /home/sonarqube/extensions/plugins/ cp sonar-css-plugin-1.0.3.724.jar /home/sonarqube/extensions/plugins/ cp sonar-gitlab-plugin-4.1.0-SNAPSHOT.jar /home/sonarqube/extensions/plugins/ cp sonar-html-plugin-3.1.0.1615.jar /home/sonarqube/extensions/plugins/ cp sonar-php-plugin-2.16.0.4355.jar /home/sonarqube/extensions/plugins/ docker restart sonarqube |
运行gitlab
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | docker run -d --name gitlab \ --hostname gitlab \ -p 443:443 -p 80:80 -p 2222:22 \ --volume /home/gitlab/config:/etc/gitlab \ --volume /home/gitlab/logs:/ var /log/gitlab \ --volume /home/gitlab/data:/ var /opt/gitlab \ gitlab/gitlab-ce:13.11.6-ce.0 vim /home/gitlab/config/gitlab.rb external_url 'http://192.168.31.131' #没有域名,替换域名为ip地址 #建议添加--restart always #若需要避开80端口,如1080,需容器内外端口一致,同时启动后立即配置external_url,否则无法登陆网页 -p 443:443 -p 1080:1080 -p 2222:22 \ external_url 'http://192.168.31.131:1080' |
汉化gitlab
登陆gitlab,先设置密码,默认用户名是root
运行gitlab-runner
1 2 3 4 5 | docker run -d --name gitlab-runner \ -v /home/gitlab-runner/config:/etc/gitlab-runner \ -v / var /run/docker.sock:/ var /run/docker.sock \ gitlab/gitlab-runner:latest #建议添加 --restart always \ |
注册runner
1 2 3 4 5 6 7 | docker exec -it gitlab-runner gitlab-runner register -n \ --url http: //192.168.31.131/ \ --registration-token kq9KZXYzFo_Mc2DWqPZQ \ --executor docker \ --description "Docker Runner" \ --docker-image "sonarsource/sonar-scanner-cli:latest" \ --docker-volumes / var /run/docker.sock:/ var /run/docker.sock |
注册新的作业
登陆gitlab-runner容器
创建sonar检测项目
登陆sonarqube,账号admin,密码admin
在sonarqube web界面中点击新建项目,输入项目标识(例如:project)和显示名称(例如:project),创建一个TOKEN、输入TOKEN名称(例如:project)后点击创建会生成TOKEN串、保存TOKEN串。
创建.gitlab-ci.yml文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | image: name: sonarsource/sonar-scanner-cli:latest entrypoint: [ "" ] variables: SONAR_TOKEN: "ef358f7fcf8afc11d9b9af97b9c9d1cd800" # 在sonarqube中创建项目时生成的TOKEN SONAR_HOST_URL: "http://192.168.31.131:9000" GIT_DEPTH: 0 sonarqube-check: stage: test script: - sonar-scanner -X -Dsonar.qualitygate.wait= true -Dsonar.projectKey=project # sonarqube中项目的标识 allow_failure: true only: # 仅检测master合并请求和master分支代码提交,sonarqube-ce版本只支持分析master分支 - merge_requests - master |
查看作业情况
至此,自动代码审查环境安装完毕。
参考:Gitlab与sonarqube整合-代码提交自动检测_ioops-CSDN博客_gitlab与sonarqube
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App