当前位置: 首页 > news >正文

GitLab Merge Request + SonarQube:构建可量化的 .NET Core 代码评审体系

安装一下gitlab,这里不推荐做挂载,在docker-desktop上会有文件读写的权限导致运行出问题。

docker run -d -p 443:443 -p 80:80 -p 222:22 ^

--hostname mygitlab.local --name gitlab --restart always ^

gitlab/gitlab-ce:18.5.0-ce.0

在本地的C:\Windows\System32\drivers\etc目录的hots下面提前配置一下域名,这是gitla安装需要的: 127.0.0.1 mygitlab.local

然后可以使用 mygitlab.local登录本地的git,默认的账号是root,密码看这里

image

还有一个gitlab.rb文件,跟初始密码是同一个目录下,配置一下下面的变量

image

image

也可以使用下面命令拷贝出来改完后再拷贝进去然后重启服务

docker cp gitlab:/etc/gitlab/gitlab.rb D:\work\docker/gitlab.rb 拷贝出来然后替换

docker cp D:\work\docker\gitlab.rb gitlab:/etc/gitlab/gitlab.rb

下面就是安装runner,首先拿到需要注入到runner中的token

image

下面就是启动服务的命令:

docker run -d --name gitlab-runner ^

--restart always ^

-v d:/dwz/docker-volume/gitlab-runner/config:/etc/gitlab-runner ^

-v /var/run/docker.sock:/var/run/docker.sock ^

gitlab/gitlab-runner:v13.2.4

然后需要注册一个runner,这里的registration-token就是gitlab拷贝出来的,url也是gitlab的地址

docker exec -it gitlab-runner gitlab-runner register -n ^

--url http://172.17.0.2 ^

--registration-token Tca8wkxwbjswexxtE_ij ^

--executor docker ^

--description "Docker Runner" ^

--docker-image "sonarsource/sonar-scanner-cli:latest"

image

以上就是完整的gitlab和ci/cd的搭建了。注意一下docker中默认使用的网关bridge,否则都要指定一下同一个,如果网关gateway:172.17.0.2不一致就需要各种网络假如等等操作,所以安装制定好就行。上面的有默认就不需要额外配置。

下面继续sonar安装:

复制代码

services:

postgres:

image: postgres:13

container_name: postgres

ports:

- "15432:5432"

volumes:

- postgres_data:/var/lib/postgresql/data

environment:

POSTGRES_USER: sonar

POSTGRES_PASSWORD: sonar

POSTGRES_DB: sonar

network_mode: bridge

sonar:

image: sonarqube:9.9-community

container_name: sonar

depends_on:

- postgres

ports:

- "9000:9000"

environment:

SONARQUBE_JDBC_USERNAME: sonar

SONARQUBE_JDBC_PASSWORD: sonar

# 内部容器互访请用服务名:port(不要用容器 IP)

SONARQUBE_JDBC_URL: jdbc:postgresql://postgres:5432/sonar

volumes:

- sonarqube_extensions:/opt/sonarqube/extensions

- sonarqube_logs:/opt/sonarqube/logs

- sonarqube_data:/opt/sonarqube/data

- sonarqube_conf:/opt/sonarqube/conf

network_mode: bridge

volumes:

postgres_data:

sonarqube_extensions:

sonarqube_logs:

sonarqube_data:

sonarqube_conf:

复制代码

使用docker-compose 安装完后需要手动配置一下数据库相关,还是社区版的插件安装配置等。首先安装旧版本,最后再试试新版本。

第一个插件可以就可以将 sonarQube 的审查结果以评论的试发布到 gitlab 上面

https://github.com/javamachr/sonar-gitlab-plugin

第二个插件可以实现增强 sonarQube 多分支包括MR的代码检测

https://github.com/mc1arke/sonarqube-community-branch-plugin

第一个插件就固定一个最新的,第二个需要根据镜像版本来安装对应的插件和配置了。

image

docker cp "D:\work\docker\sonar-gitlab-plugin-5.4.0.jar" 67ccc284b64a:/opt/sonarqube/extensions/plugins/ (67ccc284b64a 是容器名)

docker cp "D:\work\docker\sonarqube-community-branch-plugin-25.9.0.jar" 67ccc284b64a:/opt/sonarqube/extensions/plugins/ (67ccc284b64a 是容器名)

下面需要拷贝一下配置文件然后改好覆盖进去:有五行改动,分别是数据库的配置,和第二个插件。如果配置不对或者插件版本不对都会导致服务启动不了。

docker cp 容器名:/opt/sonarqube/conf/sonar.properties "D:\work\docker\sonar.properties"

docker cp "D:\work\docker\sonar.properties" 容器名:/opt/sonarqube/conf/sonar.properties

image

image

image

sonar.jdbc.username=sonar

sonar.jdbc.password=sonar

sonar.jdbc.url=jdbc:postgresql://172.17.0.4:5432/sonar

sonar.web.javaAdditionalOpts=-javaagent:./extensions/plugins/sonarqube-community-branch-plugin-1.14.0.jar=web

sonar.ce.javaAdditionalOpts=-javaagent:./extensions/plugins/sonarqube-community-branch-plugin-1.14.0.jar=ce

可以看到我这个文件的插件是针对老版本sonarqube:9.9-community的配置,而拷贝插件命令是最新版本的sonarqube:community的配置,最新版最后说。

下面就可以通过9000端口进入sonar了, 默认账号密码admin,需要进入后改掉密码。

老版本比新版本多了这个分支管理功能

image

image

下面就是如何配置sonar和gitlab的交互了,这里不配置gitlab可以通过sonar继承登录 和分组权限功能,直接最高权限来做配置。

image

image

image

image

上面权限看着勾选,前面几个read少不了的。

image

点击创建项目会提示你输入gitlab的personal access token,然后选择要导入的项目到gitlab,然后就关联上项目了。

在gitlab配置一下sonar的回调地址和权限即可,否则sonar拿不到runner扫描的结果

http://www.cnnetsun.cn/news/112165.html

相关文章:

  • DeepSeek-V3 KV缓存技术:让AI对话像翻书一样流畅
  • SpringBoot进阶教程(八十八)获取图片的宽高
  • PeachPie 1.1.13 发布支持最新PHP 8.5.0
  • 电视也可以玩街机经典游戏,你的客厅,早就该变成这样了!
  • 掌握3个Mock工具,轻松玩转单元测试
  • AutoGen到Microsoft Agent Framework终极迁移指南:从零开始构建现代化AI代理系统
  • 2008-2024年地级市女性奥运冠军数据
  • 2003-2024年上市公司人工智能采纳程度数据+Stata代码
  • 问了 3 个博士,导师不说,但目前最新论文卡人的已经不是知网查重
  • CST设计:可重构超表面宽带窄带可切换吸收与多波束技术
  • ai智能搜索文献:高效精准的学术资源检索新工具与应用研究
  • 英文文献的高效检索与阅读策略研究
  • 万字长文!Agent及其主流框架终极指南(附对比图),好Agent的标准:自己想、自己干、自己复盘!
  • 打造专属问答社区,开源系统助力内容创业新风口
  • Apache Impala为啥TBDS、华为MRS弃用?为什么不能做到无缝切换平缓迁移
  • 从开发到上线:智能Agent的Docker部署全链路实践(含YAML模板)
  • 智能连接与自动化引擎的全能表单系统,重新定义数据收集与业务流程的协同
  • 如何彻底解决企业级数据流程编排难题:Apache DolphinScheduler完整指南
  • 深度学习框架生态竞争格局:从Stable Diffusion WebUI Forge看技术选型逻辑
  • better-sqlite3深度解析:Node.js数据库操作的性能革命
  • 终极AI平台wgai:零门槛构建国产化智能识别系统
  • 基于VUE的企业协同管理系统 [VUE]-计算机毕业设计源码+LW文档
  • 如何快速使用bandcamp-dl:命令行音乐下载工具的完整教程
  • 【Excel VBA 编程】第61讲:两种方法驾驭文本处理猛兽
  • 探索金领冠珍护源初的纯净世界:2025年健康奶粉新篇章
  • Solon 不依赖 Java EE 是其最有价值的设计!
  • MegSpot:专业级图片视频对比工具全方位使用指南
  • LaMa图像修复模型性能优化实战:从PyTorch到TensorRT的完整加速方案
  • WAN2.2视频生成革命:如何用4步采样重新定义创作效率?
  • 终极Headscale配置指南:从零到精通