在gitlab-ci中运行声纳扫描器。

问题描述 投票:1回答:1

我正试图为一个python应用程序构建一个运行sonarqube的管道,这是我第一次使用gitlab-ci,所以我希望得到一些指导。 这是我第一次使用gitlab-ci,所以我希望得到一些指导。 我知道要运行 sonarqube,你必须在 yml 中调用 sonar scanner。这就是我被卡住的地方。 我如何在我的docker中设置安装声纳扫描器? 我正在运行一个带有python镜像的docker。 任何帮助将是非常感激的。 说实话,我不明白在本地下载声纳扫描器包怎么会有意义。 git管道是否默认查看安装在我本地计算机上的包?

python docker sonarqube gitlab-ci sonarqube-scan
1个回答
2
投票

有两种解决方案。

  1. 你可以在你的本地机器上安装sonar-scanner,使用 SonarScanner文件 由于声纳扫描器需要在机器上安装Java-11,你必须安装openjdk-11-jdk-headless和
   sudo apt install openjdk-11-jdk-headless

你可以使用一个安装了声纳扫描器的docker镜像作为基础镜像,然后使用该镜像来构建你自己的docker镜像,并使用所需的python版本和所需的软件。

例如,你可以使用下面的docker镜像作为你的docker镜像的参考镜像。

   bluelabseu/sonar-scanner:4.3.0-7879

使用声纳扫描仪图像为python项目创建图像的docker文件示例。

    FROM bluelabseu/sonar-scanner:4.3.0-7248`
    RUN apt-get update && apt-get install python2.7 -y && apt-get install python3.6 -y

一旦你有了一个docker文件,就可以用它来创建一个docker镜像,并将其上传到你的项目仓库的gitlab-container注册表。

在python项目中使用Sonar-scanner。

  1. 如果你想把你的代码覆盖率以及代码质量发布到sonarqube,你必须生成测试覆盖率文件,这个文件可以由任何构建工具生成。

  2. 在sonarqube管理中为python配置文件添加覆盖率报告路径。它可以设置如下。

    a. 用管理员用户登录到 sonarqube 服务器。

    b. 进入 Administration-> configuration -> python -> Test and Coverage -> Path to coverage reports. 设置 coverage-reports/*coverage-*.xml 覆盖途径 sonar.python.coverage.reportPaths 键。

  3. 生成测试覆盖率报告,例如使用诗词构建工具。poetry run py.test tests/ --cov=<PROJECT_PACKAGE_NAME>/ --cov-report xml:coverage-reports/coverage-result.xml

  4. 在您的电脑上执行以下命令

    sonar-scanner -Dsonar.coverage.exclusions=tests/** -Dsonar.python.coverage.reportPaths=coverage-reports/coverage-reports.xml  -Dsonar.projectKey=<PROJECT_NAME> -Dsonar.projectName=<PROJECT_NAME> -Dsonar.projectVersion=<<PROJECT_VERSION>  -Dsonar.sources=<PROJECT_PACKAGE_NAME> -Dsonar.tests=tests/  -Dsonar.sourceEncoding=UTF-8 -Dsonar.host.url=<SONAR_HOST_SERVER_URL> -Dsonar.login=<SONAR_AUTH_TOKEN>

注意:最好不要在sonar-scanner.properties文件中设置任何配置,而是在命令本身中用-D参数提供配置。 最好不要在sonar-scanner.properties文件中设置任何配置,而在命令本身中使用-D参数提供配置。

© www.soinside.com 2019 - 2024. All rights reserved.