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

Posted

技术标签:

【中文标题】是否可以集成 SonarQube、Jenkins 和 GitLab(都在 dockers 中)?【英文标题】:Is it possible to integrate SonarQube, Jenkins and GitLab (all in dockers)? 【发布时间】:2017-07-22 16:31:08 【问题描述】:

目前,我正在进行质量流程,以确保代码是可接受的。为此,我正在集成 Jenkins、SonarQube 和 GitLab,它们在不同的服务器中运行(实际上它们在不同的 docker 容器中)。

这个想法是每次将代码推送到 GitLab 并阻止提交、合并等时使用 SonarQube 检查 SonarQube 是否未通过。

我已经将 Jenkins 与 SonarQube 集成,但 Jenkins 会检查他工作区中的代码,所以想象一下,开发人员在他的笔记本电脑上需要推送他的更改。

我的概念性问题很简单:是否可以集成这些技术来做到这一点?如果问题是肯定的,哪些步骤是必要的?

PD:我不需要查看代码、配置文件等。我只需要这样的东西:

    配置 SonarQube 以使用 Jenkins 执行脚本以将该文件复制到该文件夹​​中, ...

【问题讨论】:

【参考方案1】:

首先,在 docker 中意味着每个工具都在自己的容器中。 他们只需要通过网络看到对方,这就是Docker Engine in Swarm mode 的来源。

第二个“配置 Jenkins 以与 SonarQube 一起工作”...这是我在我的商店中所做的,并没有太多内容。 一旦安装了Jenkins SonarQube plugin 和address for the SonarQube server entered,您就可以configure your job 并调用声纳(例如使用maven:$SONAR_MAVEN_GOAL -Dsonar.host.url=$SONAR_HOST_URL

在 Jenkins 工作区中完成的分析随后将发布在 SonarQube 服务器中。

swarm 服务器是来自 marcelbirkner/docker-ci-tool-stack 项目的 2015 docker-compose.yml file 的更现代版本。

这个想法保持不变:每个元素都被隔离在自己的容器中。

【讨论】:

【参考方案2】:

我自己没有尝试过,但 https://gitlab.talanlabs.com/gabriel-allaigre/sonar-gitlab-plugin 可能对你的设置很感兴趣。

【讨论】:

以上是关于是否可以集成 SonarQube、Jenkins 和 GitLab(都在 dockers 中)?的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins集成Sonarqube

jenkins与SonarQube集成

利用Jenkins和SonarQube集成对代码进行持续检测

持续集成Jenkins+sonarqube部署教程

持续集成Jenkins+sonarqube部署教程

Jenkins集成SonarQube