我正试图为一个python应用程序构建一个运行sonarqube的管道,这是我第一次使用gitlab-ci,所以我希望得到一些指导。 这是我第一次使用gitlab-ci,所以我希望得到一些指导。 我知道要运行 sonarqube,你必须在 yml 中调用 sonar scanner。这就是我被卡住的地方。 我如何在我的docker中设置安装声纳扫描器? 我正在运行一个带有python镜像的docker。 任何帮助将是非常感激的。 说实话,我不明白在本地下载声纳扫描器包怎么会有意义。 git管道是否默认查看安装在我本地计算机上的包?
有两种解决方案。
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。
如果你想把你的代码覆盖率以及代码质量发布到sonarqube,你必须生成测试覆盖率文件,这个文件可以由任何构建工具生成。
在sonarqube管理中为python配置文件添加覆盖率报告路径。它可以设置如下。
a. 用管理员用户登录到 sonarqube 服务器。
b. 进入 Administration-> configuration -> python -> Test and Coverage -> Path to coverage reports. 设置 coverage-reports/*coverage-*.xml
覆盖途径 sonar.python.coverage.reportPaths
键。
生成测试覆盖率报告,例如使用诗词构建工具。poetry run py.test tests/ --cov=<PROJECT_PACKAGE_NAME>/ --cov-report xml:coverage-reports/coverage-result.xml
在您的电脑上执行以下命令
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参数提供配置。