我对开发社区和DevOps实践都比较新,作为项目的一部分,我们正在尝试将SonarQube与Gitlab集成,对SonarQube和Git CI(持续集成)进行了一些研究,看起来插件已经发布在Github和SonarQube上,但没有发布在Gitlab上。
配置GitLab与SonarQube以检查每个拉取请求的代码质量有多现实?最佳实践是如何将这两个组件集成在一起?
谢谢。
我对开发社区和DevOps实践都比较新,作为项目的一部分,我们正在尝试将SonarQube与Gitlab集成,对SonarQube和Git CI(持续集成)进行了一些研究,看起来插件已经发布在Github和SonarQube上,但没有发布在Gitlab上。
配置GitLab与SonarQube以检查每个拉取请求的代码质量有多现实?最佳实践是如何将这两个组件集成在一起?
谢谢。
你其实不需要一个插件。
在你的.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项目...)
目前,据我所知,有两个社区驱动的插件旨在提供MR分析/与GitLab集成。
它们目前都正在经历下一个版本的反馈阶段,并且都希望通过发布进入更新中心。
使用这两个插件,您可以运行构建,在GitLab中提供新发现违规的评论。这两个插件都受SonarSource的GitHub插件的极大启发。
然而,我没有权利建议您使用哪个,因为我是第一个插件的开发人员,因此存在偏见。
.gitlab-ci.yml
文件正确配置即可,这与插件无关。可以查看我的回答@Johnnei和@Adi。 - Joergi我也有同样的需求,这里是我实现的方法:
创建一个没有指定标签的共享类型的runner。
创建一个名为.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。可能会有一个新的选择(替代SonarQube):GitLab 13.3(2020年8月)
它并不涵盖SonarQube处理的所有内容,但可以专注于多种语言的静态代码分析的安全方面。
我们希望帮助开发人员编写更好的代码,并减少常见安全错误的担忧。静态应用程序安全测试(SAST)通过允许开发人员在提交代码时轻松识别常见的安全问题并积极缓解,有助于预防安全漏洞。作为我们社区管理承诺的一部分,我们已经将我们所有基于开源的15个SAST分析器提供给每个GitLab版本用户使用。这使得在任何18种支持的语言和框架中开发的所有GitLab用户都可以利用GitLab SAST来协助他们的项目。
入门非常简单,只需使用我们的新的指导式SAST配置体验,启用自动DevOps或将SAST配置模板添加到您的gitlab-ci.yml
文件中即可。未使用终极版的客户可以通过下载SAST作业工件与生成的SAST漏洞报告进行交互。我们还更新了文档,详细介绍了所有SAST功能的版本细分。
GitLab的静态应用安全测试(SAST)现在支持新的引导式配置体验。启用SAST只需两个点击即可完成。我们相信安全是一个团队的努力,这种配置体验使得非CI专家更容易开始使用GitLab SAST。该工具帮助用户创建合并请求来启用SAST扫描,同时利用最佳配置实践,例如使用由GitLab管理的SAST.gitlab-ci.yml
模板以及正确覆盖模板设置。
由于GitLab SAST 覆盖了14个分析器中的18种语言,有很多SAST配置选项,可能难以理解和设置。这种新的引导式SAST配置体验帮助任何人开始使用SAST,并为我们介绍新的配置选项(如自定义规则集等)奠定了基础。我们还打算将这种引导式体验扩展到其他安全扫描工具。
另请参阅 GitLab 13.5(2020年10月)
GitLab 静态应用程序安全测试(SAST)和秘密检测现在支持自定义检测规则。这使得GitLab用户可以更改漏洞检测默认值,以适应其组织的偏好。SAST自定义规则集允许您排除规则并修改现有规则的行为。Secret Detection现在支持禁用现有规则并添加新的正则表达式模式,以允许检测任何类型的自定义密码。
通过向.gitlab
文件夹中添加名为sast-ruleset.toml
或secret-detection-ruleset.toml
的新文件来定义自定义规则集,其中包含正确符号的自定义内容。您可以在我们的SAST自定义规则集和Secret Detection自定义规则集文档中了解有关此文件格式的更多信息并查看示例。我们打算在未来的.gitlab-ci.yml
文件中提供导入自定义规则集的额外支持。
stages:
- sonarqube_test
sonarqube_test:
tags:
- your-tag-attached-to-gitlab-runner
stage: sonarqube_test
script:
- .cicd/sonarqube.sh
sonarqube.sh
文件
#!/bin/bash
#
# Args: deploy.sh
#
cd ~
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.3.0.1492-linux.zip
unzip sonar-scanner-cli-3.3.0.1492-linux.zip
rm sonar-scanner-cli-3.3.0.1492-linux.zip
chmod 777 sonar-scanner-3.3.0.1492-linux/conf/sonar-scanner.properties
echo 'sonar.host.url=http://<your_sonarqube_server_url>' >> sonar-scanner-3.3.0.1492-linux/conf/sonar-scanner.properties
chmod +x sonar-scanner-3.3.0.1492-linux/bin/sonar-scanner
sonar-scanner-3.3.0.1492-linux/bin/sonar-scanner \
-Dsonar.projectKey=<project_name> \
-Dsonar.sources=. \
-Dsonar.host.url=http://<your_sonarqube_server_url> \
-Dsonar.login=<token_from_gitlab_UI>
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.3.0.1492-linux.zip
This is now failing. You got any suggestions?
Connecting to binaries.sonarsource.com (binaries.sonarsource.com)|91.134.125.245|:443... failed: Connection refused.
- devil-0-per