Gitlab与SonarQube集成

时间:2017-03-21 18:41:45

标签: plugins continuous-integration sonarqube gitlab devops

我是开发社区的新手,特别是DevOps实践,作为项目的一部分,我们正在尝试将SonarQube与Gitlab集成,做了一些R&关于SonarQube和Git CI(持续集成)的D和看起来像Github和SonarQube的插件,而不是Gitlab。

使用SonarQube配置GitLab以检查每个拉取请求的代码质量以及整合这两个部分的最佳实践是多么现实。

谢谢

5 个答案:

答案 0 :(得分:21)

你真的不需要插件。 在.gitlab-ci.yml

中制作类似的内容
stages: 
- build 
build_master:
  image: maven
  stage: build
  artifacts:
    paths:
    - target/*.jar
  script:
  - mvn package sonar:sonar -Dsonar.host.url=https://sonar.yourdomain.tld/ 
  only:
  - master

每个主推都将进行测试! (这是针对Java项目的......)

答案 1 :(得分:14)

目前有(据我所知)两个社区驱动的插件,旨在提供MR分析/与GitLab集成。

他们两人目前正在通过反馈阶段进行下一次发布,并且两者都打算在该版本的基础上进入更新中心。

你们两个都可以运行一个构建,它将在GitLab中提供新发现的违规行为。两者都受到SonarSource的GitHub插件的高度启发。

但是我无法建议你使用哪两个,因为我是第一个开发者,因此有偏见。

答案 2 :(得分:4)

我遇到了同样的要求,这就是我实施的方式,

创建一个跑步者而不指定任何标签和共享类型。 使用以下命令

创建文件.gitlab-ci.yml文件
variables:
  SONAR_URL: "http://your_sonar_url"
  SONAR_LOGIN: "sonar_user_id"
  SONAR_PASSWORD: "sonar_password"

sonarqube_master_job:
  stage: test
  only:
    - master
  image: maven:3.3.9-jdk-8-alpine
  script:
    - mvn --batch-mode verify sonar:sonar -Dsonar.host.url=$SONAR_URL -Dsonar.login=$SONAR_LOGIN -Dsonar.password=$SONAR_PASSWORD

如果您使用特定标签创建转轮,则需要在.gitlab-ci.yml文件中提及标签

您可以在此链接https://forum.gitlab.com/t/activated-specific-runner-is-not-working/7002

中获取有关添加标记的详细信息

答案 3 :(得分:1)

使用GitLab 13.3(2020年8月)可能会有一个新的替代方法(代替SonarQube)

SonarQube不能涵盖所有内容,但是可以专注于针对多种语言的静态代码分析的安全性。

所有用户都可以使用SAST安全分析器

我们希望帮助开发人员编写更好的代码,减少对常见安全性错误的担心。 Static Application Security Testing (SAST)通过允许开发人员在提交代码时主动识别常见的安全问题并主动缓解,从而帮助防止了安全漏洞。作为community stewardship commitment的一部分,我们在每个all 15 of our open source based SAST analyzers中都提供了GitLab tier。这样,在我们任何18 supported languages and frameworks中开发的 ALL GitLab用户都可以在其项目中利用GitLab SAST。

入门就像使用我们的new guided SAST configuration experience,启用Auto DevOps或将SAST configuration template添加到gitlab-ci.yml文件一样容易。不在最终级别上的客户可以与SAST vulnerability report生成的downloading the SAST job artifact进行交互。我们还用有关tier breakdown for all our SAST features的详细信息更新了我们的文档。

https://about.gitlab.com/images/13_3/sast-gitlab-languages.png -- SAST security analyzers available for all

请参见DocumentationIssue

而且(与上一节相反,不是免费的):

SAST指导的配置经验

GitLab的Static Application Security Testing (SAST)现在支持新的引导式配置体验。现在只需单击两次即可启用SAST。我们相信security is a team effort和这种配置经验使非CI专家可以更轻松地开始使用GitLab SAST。该工具可帮助用户创建合并请求以启用SAST扫描,同时利用最佳配置实践(例如,使用受GitLab管理的SAST.gitlab-ci.yml template和正确的overriding template settings)。

使用GitLab SAST covering 18 languages across 14 analyzers,有许多SAST配置选项,可能很难理解和设置。这种新的SAST引导配置经验可帮助任何人入门SAST,并为我们引入新的配置选项(例如自定义规则集等)奠定了基础。我们还打算将这种指导性经验扩展到其他security scanning tools

https://about.gitlab.com/images/13_3/SAST_Config_UI_13.3.png -- Guided SAST configuration experience

请参见DocumentationIssue


另请参阅GitLab 13.5(2020年10月)

自定义SAST和秘密检测规则

GitLab Static Application Security Testing (SAST)Secret Detection现在支持自定义检测规则。这使GitLab用户可以更改漏洞检测默认设置,以根据组织的偏好调整结果。 SAST自定义规则集允许您排除规则并修改现有规则的行为。秘密检测现在支持禁用现有规则并添加新的正则表达式模式,以允许检测任何类型的自定义秘密。

可以通过将新文件添加到名为.gitlabsast-ruleset.toml的{​​{1}}文件夹中来定义自定义规则集,其中包含用正确的符号编写的自定义项。您可以了解有关此文件格式的更多信息,并在SAST custom rulesetsSecret Detection custom rulesets的文档中查看示例。我们以后将intend to provide additional support for importing custom rulesets个文件放入secret-detection-ruleset.toml个文件中。

https://about.gitlab.com/images/13_5/custom-rulesets-example-13.5.png -- Customizing SAST & Secret Detection rules

请参见DocumentationEpic

答案 4 :(得分:0)

下面是我做MVP的方法。

:root { --ion-font-family: 'MyFont'; }

.gitlab-ci.yml

stages: - sonarqube_test sonarqube_test: tags: - your-tag-attached-to-gitlab-runner stage: sonarqube_test script: - .cicd/sonarqube.sh 文件

sonarqube.sh