在gitlab-ci中运行声纳扫描仪

时间:2020-05-13 21:54:32

标签: python docker sonarqube gitlab-ci sonarqube-scan

我正在尝试为python应用程序构建一个运行sonarqube的管道。这是我第一次使用gitlab-ci,所以我希望获得一些指导。我知道要运行声纳,您必须以某种方式在yml中调用声纳扫描仪。那就是我被困住的地方。如何在泊坞窗中设置/安装声纳扫描仪?我正在使用python图像运行docker。任何帮助将不胜感激。老实说,我不了解在本地下载声纳扫描仪软件包的意义。 git管道默认是否查看本地计算机上安装的软件包?

1 个答案:

答案 0 :(得分:2)

有两种解决方案:

  1. 您可以使用SonarScanner Documentaion在本地计算机上安装声纳扫描仪,因为声纳扫描仪要求在计算机上安装Java-11,因此您必须使用
  2. 安装openjdk-11-jdk-headless
   sudo apt install openjdk-11-jdk-headless

然后按照文档中提供的步骤在您的机器上安装声纳扫描仪。 2.您可以将安装了声纳扫描仪的docker镜像用作基础镜像,并使用该镜像构建具有所需python版本和所需软件的自己的docker镜像。

例如,您可以使用以下docker映像作为docker映像的参考映像

   bluelabseu/sonar-scanner:4.3.0-7879

使用声纳扫描仪图像采样docker文件来为python项目创建图像。

    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注册表中。

将Sonar-scanner用于python项目:

  1. 如果要向sonarqube发布代码覆盖率和代码质量,则必须生成可由任何构建工具生成的测试覆盖率文件。

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

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

    b。转到管理->配置-> python->测试和覆盖率->覆盖率报告的路径。将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参数的配置,将会更好。