将 gitlab 与 sonarqube 集成

Posted

技术标签:

【中文标题】将 gitlab 与 sonarqube 集成【英文标题】:integrating gitlab with sonarqube 【发布时间】:2016-10-22 02:16:28 【问题描述】:

我的服务器上安装了 GitLab CE(至少 v8.5)。我想将它与 sonarqube 集成,以便合并请求在评论部分显示任何问题。有人成功集成了这两个系统吗?

目前,我发现的只有 sonarqube 插件如下,但我无法成功将其与 GitLab 集成。

https://gitlab.talanlabs.com/gabriel-allaigre/sonar-gitlab-plugin

我为 sonarqube (v5.5) 使用了一个 docker 容器,并将插件复制到扩展目录中。在sonarqube的插件设置页面中配置了gitlab用户token和gitlab uri。

我正在使用 GitLab CI 进行持续集成,并且我有以下 sonarqube 的构建工作(使用 gradle)

sh gradlew sonarqube -Psonar.analysis.mode=preview -Psonar.issuesReport.console.enable=true \
  -Psonar.gitlab.commit_sha=$CI_BUILD_REF -Psonar.gitlab.ref_name=$CI_BUILD_REF_NAME \
  -Psonar.gitlab.project_id=$CI_PROJECT_ID

但是,我不知道接下来该做什么。几个问题:

    当合并请求还不存在时会发生什么?在我的 git 工作流程中,用户在完成分支工作后将提交合并请求。那么,这个插件如何知道要更新哪个合并请求呢?

    现在我将 sonarqube 验证任务设置为仅在 master 分支上运行。我认为这也需要更改为用户分支,对吧?

我确实尝试过提交合并请求,但我没有看到任何 cmets 被添加。我想我缺少一些配置或过程。如果您能帮助我指出正确的方向,我们将不胜感激。

【问题讨论】:

你确定 GitLab 插件真的安装到 SonarQube 了吗? (一种验证方法:当您在 SonarQube 中进入 Administration 时,您在左侧看到 GitLab 吗?)我问是因为像您一样,我正在运行 SonarQube with Docker ...请注意这个警告:如果 @987654324 @目录是一个VOLUME,那么你不能指望wgetcurl从你的Dockerfile进入它。你可能认为你抓住了扩展,但如果你ls启动后你可能会发现,插件并不存在 感谢您的回复。我在 Sonarqube 中检查了管理,并验证了该插件确实出现了。拉取 sonarqube docker 镜像后,其实是把插件文件复制到了容器里面。 我遇到了同样的问题。你找到解决办法了吗? 【参考方案1】:

我遇到了和你一样的问题。 GitLab MR 中未显示评论。我做了两个修复:

确保使用了预览模式。如果不是,则不会向 GitLab 报告问题 对于显示为 GitLab cmets 的问题,它们必须是“新”问题。如果您在推送到 GitLab 之前启动了对项目的分析,SonarQube 不会将这些问题视为新问题,并且不会向 MR 添加任何评论。

如果这不能解决您的问题,请尝试克隆插件 repo,向代码添加跟踪(CommitIssuePostJob.java 是查看的地方),使用 maven 打包 jar 并将修补的 jar 部署到您的 Sonar 安装。这就是我看到我没有要报告的新问题的方式。

【讨论】:

【参考方案2】: 您应该使用 -Dsonar.gitlab... 而不是 -Psonar.gitlab... 等(请参阅https://groups.google.com/forum/#!topic/sonarqube/dx8UIkcz55c) 在最新版本的插件中,您可以启用在未发现问题时添加评论。这有助于调试。

@1: cmets 将被添加到您的提交中,然后将显示在合并请求的讨论部分中

@2:我们正在对 master 进行全面分析,并对任何分支进行预览。

【讨论】:

以上是关于将 gitlab 与 sonarqube 集成的主要内容,如果未能解决你的问题,请参考以下文章

是否可以集成 SonarQube、Jenkins 和 GitLab(都在 dockers 中)?

Jenkins+Ant+Gitlab+Sonarqube+Docker实现持续集成,质量管理

Sonarqube 委托对 Gitlab 的身份验证失败

如何集成sonarqube至gitlab

sonarqube+gitlab+jenkins+maven集成搭建

Jenkins+GitLab+Sonarqube+Shell持续集成CI/CD