3.sonarqube的使用-jenkins

一、自由风格的项目

1. 新建任务 (构建一个自由风格的软件项目)>

创建任务.png

2. 源码管理中填写gitlab仓库地址,以及凭据

填写源码地址.png

3. 在构建中选择“Execute SonarQube Scanner”

image.png
sonar.projectKey=simple-python-pyinstaller-app
sonar.projectName=simple-python-pyinstaller-app
sonar.sourceEncoding=UTF-8
sonar.sources=.
image.png

4.点击构建即可查看结果

image.png
  • 失败原因为:单元测试的覆盖率太低。阀值的设置在前面SonarQube中已涉及过


    image.png

二、使用流水线的任务

1.新建任务,填写名称,类型选择流水线

image.png

2.在项目的根目录创建文件:sonar-project.properties

sonar.projectKey=simple-python-test
sonar.projectName=simple-python-test
sonar.projectVersion=1.2
# 指定python版本
sonar.python.version = 3.8
# 项目描述
sonar.projectDescription = 测试项目
# 项目检测的语言类型
sonar.language=py
# 项目的源码地址,根目录使用 .
sonar.sources=sources
sonar.sourceEncoding=UTF-8
# 排除检测的文件目录(逗号隔开)
sonar.exclusions=**/static/**,**/__init__.py,**/*.xml
# 测试文件的地址
sonar.tests=./tests
sonar.test.inclusions = **/test_*.py
# 排除测试文件(逗号隔开)
sonar.test.exclusions = **/static/**,**/__init__.py,**/coverage.xml
# 单元测试覆盖率
sonar.python.coverage.reportPaths=tests/report/coverage.xml
# 用来从覆盖率报告中排除的匹配方式(逗号隔开)
sonar.coverage.exclusions=**/static/**,**/__init__.py
# 单元测试执行(显示执行数量)
sonar.python.xunit.skipDetails=false
sonar.python.xunit.reportPath = tests/report/junit_report.xml
# 配置不需要检测重复率的文件
# sonar.cpd.exclusions =
# 控制分析期间生产的日志的数量/级别
# sonar.log.level = INFO

3. jenkinsfile增加

pipeline {
    agent {
        label "windows_node"
    }
    stages {
        stage('环境') {
            steps {
                sh 'D:/Python3.8/python -m venv ./venv'
                sh './venv/Scripts/python -V'
                sh './venv/Scripts/pip install --default-timeout=200 -i https://mirrors.aliyun.com/pypi/simple/ --upgrade -r requirements.txt'
            }
        }
        stage('单元测试') {
            steps {
                sh './venv/Scripts/coverage run -m pytest --junitxml="./tests/report/junit_report.xml"'
                sh './venv/Scripts/coverage xml -o tests/report/coverage.xml -i'
            }
        }
        stage('SonarQube analysis') {
            steps {
                script {
                    scannerHome = tool "MysonarScannerForJenkins"
                }
                withSonarQubeEnv("MySonaraServer") {
                    sh "../../tools/hudson.plugins.sonar.SonarRunnerInstallation/MysonarScannerForJenkins/bin/sonar-scanner"
                }
            }
        }
        stage('Quality Gate') {
            steps {
                timeout(time: 120, unit: 'SECONDS') {
                    sleep(8)
                    waitForQualityGate abortPipeline: true
                }

            }
        }
        stage('清理') {
            steps {
                sh 'rm -rf log'
                sh 'rm -rf static'
                sh 'rm -rf tests/report'
            }
        }

    }
}


4. 构建结果,可以查看报告

image.png

5. 查看报告,并修改使用的质量阀

5.1 测试的质量阀规定:代码超过200行则为失败
image.png
5.2. 重新构建完以后,失败,不进行后续的构建
image.png

image.png

三、参考文档

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容